コード例 #1
0
        public void XmlToJson_FailXmlShouldBeAnnounce(string xml)
        {
            string expected = "Bad Xml format";
            string actual   = XmlToJson.Convert(xml);

            Assert.Equal(expected, actual);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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.");
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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();
        }
コード例 #8
0
        /// <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);
            }
        }
コード例 #9
0
        public void XmlToJson_SimpleXmlShouldBeConverted(string xml, string expected)
        {
            string actual = XmlToJson.Convert(xml);

            Assert.Equal(expected, actual);
        }