C# 解析xml和Json字符串

来源:互联网 发布:免费虚拟演播室软件 编辑:程序博客网 时间:2024/06/05 15:30

1.  解析xml文件

例如:XML 数据格式如下:
<RelatedDataItem>
  <DataItem key="1">
    <DataService Value=""/>
    <Method Value=""/>
    <DataSetID Value=""/>
    <ContentType Value=""/>
  </DataItem>
 
  <DataItem key="2">
    <DataService Value=""/>
    <Method Value=""/>
    <DataSetID Value=""/>
    <ContentType Value=""/>
  </DataItem>

</RelatedDataItem>
 

用C#代码解析xml字符串数据,先通过数据服务读取到xml字符串,然后通过以下代码解析

public void readXML(string xmlContent) 

{

            if (xmlContent.StartsWith("<RelatedDataItem"))
            {

               //通过得到的xml字符串转换成xml格式,然后进行解析
                XDocument categoriesXML = XDocument.Load(XmlReader.Create(new StringReader(xmlContent)));         


                XElement datas = categoriesXML.Element("RelatedDataItem");

                foreach (XElement WellElement in datas.Elements())
                {

                    if (WellElement.Name == "DataItem")
                    {
                        string wellLogType = WellElement.Attribute("key").Value;

                        string dataService = WellElement.Element("DataService").Attribute("Value").Value;
                        string method = WellElement.Element("Method").Attribute("Value").Value;
                        string dataSetID = WellElement.Element("DataSetID").Attribute("Value").Value;
                        string contentType = WellElement.Element("ContentType").Attribute("Value").Value;

                       
                    }
                }
          }

          else

          {

                throw new exceptio("xml数据格式不正确");

         }

}

 

2. 解析json字符串

例如: Json数据格式如下

   "point1": [
                {
                    "ptId": "1",
                    "X": "22",
                    "Y": "22",
                    "Z": "22"
                },
                {
                    "ptId": "2",
                    "X": "33",
                    "Y": "33",
                    "Z": "33"
                },
                {
                    "ptId": "3",
                    "X": "44",
                    "Y": "44",
                    "Z": "44"
                },
                {
                   "ptId": "4",
                    "X": "55",
                    "Y": "55",
                    "Z": "55
                  }
                ],
            "point2": [
                {
                    "ptId": "22",
                    "X": "333",
                    "Y": "333",
                    "Z": "33"3
                },
                {
                   "ptId": "33",
                    "X": "444",
                    "Y": "444",
                    "Z": "444"
                },
                {
                    "ptId": "44",
                    "X": "555",
                    "Y": "555",
                    "Z": "555"
                }
            ]

用C#代码解析Json字符串。通过服务获取到json数据的字符串,然后进行解析

首先得引入第三方的解析JSON的库(也可以用vs自带的解析JSON的库)

第三方库如下:

using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Serialization;
using Newtonsoft.Json.Linq;

 

   public void test(ScriptObject e)
   {

            if (e == null)
                return;

            
            for (int pointCount= 0; pointCount>= 0; pointCount++)
            {
                ScriptObject point= (ScriptObject)e.GetProperty("Line" + (point+ 1));    //读取一个点

                if (point== null)
                    break;

                
                for (int i = 0; i >= 0; i++)    //读取点中的每个元素
                {
                    ScriptObject tmpPoint= (ScriptObject)point.GetProperty(i);

                    if (tmpPoint== null || tmpPoint.GetProperty("X").ToString().Trim().Length == 0 || tmpPoint.GetProperty("Y").ToString().Trim().Length == 0)
                        break;

                   

                    stirng tmpID = (string)tmpPoint.GetProperty("ptId");

                    float X = float.Parse((tmpPoint.GetProperty("X").ToString()));
                    float Y = float.Parse((tmpPoint.GetProperty("Y").ToString()));
                      float  Z = float.Parse((tmpPoint.GetProperty("Z").ToString()));
                }
            } 
      }

利用 VS 自带的JSON解析库进行解析,大概代码如下

引入库

using System.Json;

 

public void test(string jsonString)

{

      JsonObject jo = (JsonObject)JsonObject.Parse(jsonString);

      JsonArray tmpObj = jo["point1"];

 

     object objId = tmpObj["ptId"];

     object objX = tmpObj["X"];

     object objY = tmpObj["Y"];

     object objZ = tmpObj["Z"];

}

 

 

 

 

 

 

原创粉丝点击