public void XmlToJson_FailXmlShouldBeAnnounce(string xml) { string expected = "Bad Xml format"; string actual = XmlToJson.Convert(xml); Assert.Equal(expected, actual); }
public ActionResult <string> Get() { String actionResult = "{}"; String url = "https://nl.cwcloudpartner.com/nl-develop/e/register"; XmlDocFromUrl xmlDocFromUrl = new XmlDocFromUrl(url); try { // Get Xml from url and convert to Json string List <KeyValuePair <String, String> > list = xmlDocFromUrl.GetXmlDocList(); String xmlToJson = new XmlToJson().XmlToJsonString(list); actionResult = xmlToJson; // Save to Log database... // System.AppDomain.CurrentDomain.BaseDirectory dbService = new XmlDbService.XmlDbService("This service is ready", "L", this.msconnectionString); } catch (MySql.Data.MySqlClient.MySqlException ee) { actionResult = ee.ToString(); } catch (Exception ee) { // Save to Log database... new XmlDbService.XmlDbService(ee.ToString(), "E", this.msconnectionString); } return(actionResult); }
public void XmlToJson_LongXmlShouldBeConverted() { string xml = "<TRANS><HPAY><ID>103</ID><STATUS>3</STATUS><EXTRA><IS3DS>0</IS3DS><AUTH>031183</AUTH></EXTRA><INT_MSG/><MLABEL>501767XXXXXX6700</MLABEL><MTOKEN>project01</MTOKEN></HPAY></TRANS>"; string expected = "{\"TRANS\":{\"HPAY\":{\"ID\":\"103\",\"STATUS\":\"3\",\"EXTRA\":{\"IS3DS\":\"0\",\"AUTH\":\"031183\"},\"INT_MSG\":null,\"MLABEL\":\"501767XXXXXX6700\",\"MTOKEN\":\"project01\"}}}"; string actual = XmlToJson.Convert(xml); Assert.Equal(expected, actual); }
public void XMLToJSONTests_EnsureOneLineModelConverts() { string xml = ReflectionUtilities.GetResourceAsString("UnitTests.Core.ApsimFile.XMLToJSONTests_EnsureOneLineModelConverts.xml"); string expectedJson = ReflectionUtilities.GetResourceAsString("UnitTests.Core.ApsimFile.XMLToJSONTests_EnsureOneLineModelConverts.json"); string json = XmlToJson.Convert(xml); Assert.AreEqual(expectedJson, json); }
public void Can_Convert_Xml_And_Parse_Json() { var json = XmlToJson.Convert(xml); var selector = "query.results.channel.wind.chill,query.results.channel.wind.speed"; var parser = new JsonObjectParser(); var jsonString = parser.Parse(json, selector); dynamic result = JsonConvert.DeserializeObject <ExpandoObject>(jsonString); Assert.IsNotNull(result, "result was null"); Assert.AreEqual("59", result.chill, "chill was not correct."); Assert.AreEqual("18", result.speed, "speed was not correct."); }
public void Run() { var wc = new WebClient(); var j = new Json("{ data : 'hello' }"); wc.GetData(j); var x = new Xml("<data>hello</data>"); var xtj = new XmlToJson(x); wc.GetData(xtj); }
static void Main(string[] args) { // Reads an Apsim soil library file (.soils), convert it and save as json file, based on a baseTemplate /*string inputPath = @"H:\My Documents\RCichota\Projects\Shiny-ClimateChange\GlobalParameters(Copy)\"; * string inputFile = "MasterSoilApsimLibrary.soils"; * string baseFileFullPath = @"\\storage.powerplant.pfr.co.nz\input\projects\ShinyClimateChange\rawData\soils\BaseSoil(2019.07.18).apsimx"; * string libraryFileFullPath = @"\\storage.powerplant.pfr.co.nz\input\projects\ShinyClimateChange\processedData\soils\2019-08-28_MasterSoilApsimLibrary.soils"; */ /*string inputPath = @"H:\My Documents\RCichota\Projects\InteroperableModels\GitHub\Soils\"; * string inputFile = "Aparima_SMap_SoilwatLibrary.soils"; * string baseFileFullPath = @"H:\My Documents\RCichota\Projects\InteroperableModels\GitHub\ApsimIOM\Config\base.apsimx"; * string outputFile = "AparimaApsimXSoilLibrary.apsimx";*/ string inputPath = @"H:\My Documents\RCichota\Projects\InteroperableModels\GitHub\Soils\"; string inputFile = args[0] + ".soils"; string libraryFileFullPath = inputPath + inputFile; string baseFile = args[1] + ".apsimx"; string outputPath = inputPath; string baseFileFullPath = inputPath + baseFile; string outputFile = "MasterApsimXSoilLibrary.apsimx"; string outputFileFullPath = inputPath + "NewLibrary.apsimx"; string soilSought = "All"; //soilSought = "Aparima_6a1"; //XmlToJson.ConvertFile(libraryFileFullPath, baseFileFullPath, outputFileFullPath); XmlToJson.ConvertFile(libraryFileFullPath, baseFileFullPath, outputFileFullPath, soilSought, true); //XmlToJson.ConvertFile(inputPath + inputFile, inputPath + baseFile, outputPath + outputFile, soilSought); /* * string soilSought = "Canterbury_M ";//"Kawek_4a1";// * JObject mySoil = XmlToJson.GetConvertedSoil(inputPath + inputFile, inputPath + baseFile, soilSought); * /**/ Console.WriteLine("Soil conversion finished"); Console.Write(" press any key..."); Console.ReadLine(); }
/// <summary> /// 发送模板消息 /// </summary> /// <param name="apiBaseUrl"></param> /// <param name="message"></param> /// <param name="mq"></param> /// <returns></returns> private static SendWXTemplateMessageResponseModel SendTemplateMessage( string apiBaseUrl, Proc_GetMessageInfoByMessageIDs_Result message, Proc_GetRobotServerMessageQueueForWXRobot_Result mq ) { SendWXTemplateMessageResponseModel sendWXTemplateMessageResponseModel = null; try { //模板消息post路径 string urlForSendTemplateMessage = _httper.Get(string.Format("{0}/api/wx/GetTemplateMessageBaseUrl?publicAccountID={1}", apiBaseUrl, mq.PublicAccountID)); //fuxily urlForSendTemplateMessage = urlForSendTemplateMessage.Replace("\"", ""); string TemplateMessageBaseUrl = string.Format("{0}/api/wx/SendWXTemplateMessage", apiBaseUrl); //fuxily int toUserID = mq.ToUserID ?? 0; if (mq.MoreParams != null) { var morePara = Common.GetUrlParas.GetUrlParasHandler.GetUrlParas(mq.MoreParams); if (morePara != null) { foreach (var item in morePara) { if (item.Key == "copyToUserID") { toUserID = Common.DataTypes.IntHandler.ToInt32(item.Value); } } } } string TemplateMessageData = Common.HTTP.PostDataHandler.GetPostData ( new List <PostDataRequestModel>() { new PostDataRequestModel() { ParameterName = "schoolPublicAccountID", ParameterValue = message.SchoolPublicAccountID }, new PostDataRequestModel() { ParameterName = "messageFunctionID", ParameterValue = message.MessageFunctionID }, new PostDataRequestModel() { ParameterName = "messageID", ParameterValue = message.ID }, new PostDataRequestModel() { ParameterName = "messageQueueID", ParameterValue = mq.ID }, new PostDataRequestModel() { ParameterName = "toUserID", ParameterValue = toUserID }, new PostDataRequestModel() { ParameterName = "fromUserID", ParameterValue = mq.FromUserID } } ); //模板消息json数据 string xmlData = _httper.Post(TemplateMessageBaseUrl, TemplateMessageData); if (!string.IsNullOrEmpty(xmlData)) { //移除xmlData首尾的引号 xmlData = xmlData.Remove(0, 1); xmlData = xmlData.Remove(xmlData.Length - 1, 1); //加载XML XmlDocument doc = new XmlDocument(); doc.LoadXml(xmlData); // XmlNode node = doc.SelectSingleNode("xml/data/keyword1"); XmlNode contentNode = null; switch (message.MessageFunctionID) { case 1: case 2: case 3: case 4: case 17: case 3000: contentNode = doc.SelectSingleNode("xml/data/keyword3/value"); break; default: contentNode = doc.SelectSingleNode("xml/data/keyword1/value"); break; } string content = contentNode.InnerText; //content = Regex.Replace(content, @"\p{Cs}", "");//把手机中Emoji表情字符去掉。解决出现Emoji表情字符时,LoadXml加载失败,导致机器人发送总是返回Null问题(一直发送失败) string replaceContent = content.Replace("\\\"", "”");//把发送信息中的"替换成中文的” content = string.IsNullOrEmpty(content) ? "内容为空" : content; if (replaceContent.Length > 140) //当消息内容超过140字时,截取前140个字,并显示【更多】 { replaceContent = replaceContent.Substring(0, 140); replaceContent += "【更多】"; } string replaceXml = xmlData.Replace(content, replaceContent); doc.LoadXml(replaceXml); var jsonData = XmlToJson.XmlToJSON(doc); var dataForSendTemplateMessage = jsonData.Remove(jsonData.LastIndexOf("}")).Remove(0, 8); //dataForSendTemplateMessage = ClearImageHtml(dataForSendTemplateMessage); //清除模版消息中的图片html标签-Haley var sendTemplateMessageResultString = ""; lock (sendMessageLock) { var model = messageQueueIDs.Where( p => p.MessageQueueID == mq.ID && (Common.Time.NowHandler.GetNowByTimeZone() - p.Created).TotalSeconds < 60 ).FirstOrDefault(); //去重,1分钟之内,没有发送过的MessageQueueID才去发送 if (model == null) { sendTemplateMessageResultString = _httper.Post(urlForSendTemplateMessage, dataForSendTemplateMessage); sendWXTemplateMessageResponseModel = Newtonsoft.Json.JsonConvert.DeserializeObject <SendWXTemplateMessageResponseModel>(sendTemplateMessageResultString); if (sendWXTemplateMessageResponseModel.ErrCode == 0) { messageQueueIDs.Add(new Models.MessageQueues.MessageQueueIDModel() { MessageQueueID = mq.ID ?? 0, Created = Common.Time.NowHandler.GetNowByTimeZone() }); } } } //删除1分钟后的消息队列ID messageQueueIDs.RemoveAll( p => (Common.Time.NowHandler.GetNowByTimeZone() - p.Created).TotalSeconds > 70 ); if (!string.IsNullOrEmpty(sendTemplateMessageResultString)) { //将json转换成对象 if (sendWXTemplateMessageResponseModel.ErrCode == 42001 || //当AccessToken无效时 sendWXTemplateMessageResponseModel.ErrCode == 40001) //当AccessToken过期时(有可能刚好过期)) { string[] urls = urlForSendTemplateMessage.Split('='); string invalidToken = urls[1]; string urlForRefreshWXAccessToken = string.Format("{0}/api/ZcooApi/RefreshWXAccessToken?publicAccountID={1}&invalidToken={2}", apiBaseUrl, mq.PublicAccountID, invalidToken); _httper.Get(urlForRefreshWXAccessToken); } } } return(sendWXTemplateMessageResponseModel); } catch (Exception e) { if (e.Message.Contains("字符串的长度不能为零")) { templateMessageQueues.RemoveAll(c => c.MessageID == mq.MessageID); messages.RemoveAll(c => c.ID == mq.MessageID); string failUrl = string.Format("{0}/api/zcooapi/UpdateMessageStatus?messageID={1}&messageStatusID={2}&remark={3}&isIncludeSender={4}", apiBaseUrl, mq.MessageID, 3, e.Message, true); var result = _httper.Get(failUrl); if (result != "OK") { _httper.Get(failUrl); } sendWXTemplateMessageResponseModel = new SendWXTemplateMessageResponseModel(); sendWXTemplateMessageResponseModel.ErrCode = -1000; return(sendWXTemplateMessageResponseModel); } return(sendWXTemplateMessageResponseModel); } }
public void XmlToJson_SimpleXmlShouldBeConverted(string xml, string expected) { string actual = XmlToJson.Convert(xml); Assert.Equal(expected, actual); }