C# 在C中解析XML响应#

C# 在C中解析XML响应#,c#,xml,C#,Xml,我从远程服务器得到的响应是一个字符串,其中包含XML,如下所示: <?xml version="1.0" encoding="utf-16"?> <abcTransactionSegment> <TransactionSegment> <RECORD_TYPE>G100</RECORD_TYPE> <POS_TILL></POS_TILL> <SHIFT_NO

我从远程服务器得到的响应是一个字符串,其中包含XML,如下所示:

<?xml version="1.0" encoding="utf-16"?>
  <abcTransactionSegment>
    <TransactionSegment>
      <RECORD_TYPE>G100</RECORD_TYPE>
      <POS_TILL></POS_TILL>
      <SHIFT_NO></SHIFT_NO>
      <RECEIPT_NO>SC10333</RECEIPT_NO>
      <TIMESTAMP>2017-08-01T20:12:35.84+05:30</TIMESTAMP>
      <INV_AMT>1494.9</INV_AMT>
      <TAX_AMT>269.1</TAX_AMT>
      <DIS_AMT>1495</DIS_AMT>
      <NET_AMT>1764</NET_AMT>
      <RET_AMT>0</RET_AMT>
      <CUST_NAME>MAYUR</CUST_NAME>
      <TRANSACTION_STATUS>SALES</TRANSACTION_STATUS>
    </TransactionSegment>
    <TransactionSegment>
      .
      .
    </TransactionSegment>
 </abcTransactionSegment>
提前感谢。

XmlDocument doc=new XmlDocument();
    XmlDocument doc = new XmlDocument();
    //load xml
    doc.Load(yourXMLString);
    or
    doc.LoadXml("<?xml version="1.0" encoding="utf-16"?>
  <abcTransactionSegment>
    <TransactionSegment>
      <RECORD_TYPE>G100</RECORD_TYPE>
      <POS_TILL></POS_TILL>
      <SHIFT_NO></SHIFT_NO>
      <RECEIPT_NO>SC10333</RECEIPT_NO>
      <TIMESTAMP>2017-08-01T20:12:35.84+05:30</TIMESTAMP>
      <INV_AMT>1494.9</INV_AMT>
      <TAX_AMT>269.1</TAX_AMT>
      <DIS_AMT>1495</DIS_AMT>
      <NET_AMT>1764</NET_AMT>
      <RET_AMT>0</RET_AMT>
      <CUST_NAME>MAYUR</CUST_NAME>
      <TRANSACTION_STATUS>SALES</TRANSACTION_STATUS>
    </TransactionSegment>
    <TransactionSegment>
      .
      .
    </TransactionSegment>
 </abcTransactionSegment>");

    //finding node
    XmlNode node = doc.DocumentElement.SelectSingleNode("/abcTransactionSegment/TransactionSegment/RECORD_TYPE");
//加载xml doc.Load(您的xmlstring); 或 doc.LoadXml(“ G100 SC10333 2017-08-01T20:12:35.84+05:30 1494.9 269.1 1495 1764 0 玛尤 出售 . . "); //查找节点 XmlNode node=doc.DocumentElement.SelectSingleNode(“/abCtrTransactionSegment/TransactionSegment/RECORD_TYPE”);
有多种方法。最好的方法是使用XML反序列化。下面是使用LINQ的替代方法

XDocument doc = XDocument.Load(xml);//Load your XML data here.
       if (doc.Descendants("abcTransactionSegment").Any()) // Check for root
       {

           if (doc.Descendants("abcTransactionSegment").Elements("TransactionSegment").Count() > 0)
           {
               foreach (var xmlElements in doc.Descendants("abcTransactionSegment").Elements("TransactionSegment"))
               {
                  string RECEIPT_NO =  xmlElements.Element("RECEIPT_NO") != null ? xmlElements.Element("RECEIPT_NO").Value : "";// It will give you the node value
               }
           }
       }

您可以编写自己的XML解析器,也可以使用Linq2XML

XElement xml = XElement.Parse(xmlResponseAsString);
IEnumerable<XElement> segmentItems =  xml.Elements("TransactionSegment");
XElement xml=XElement.Parse(xmlResponseAsString);
IEnumerable segmentItems=xml.Elements(“TransactionSegment”);

您可以使用XML反序列化。 创建TransactionSegment模型

public int RECORD_TYPE {get;set;} 
pub string POS_TILL {get;set;} 

Dim a List<TransactionSegment> Model   listTransactionSegment

System.IO.StringReader stringReader = new System.IO.StringReader(Xml);  
System.Xml.Serialization.XmlSerializer xmlSerializer = new 
System.Xml.Serialization.XmlSerializer(typeof(List<TransactionSegment>));  


//  
listTransactionSegment=xmlSerializer.Deserialize(stringReader) as 
List<TransactionSegment>;  
public int RECORD_TYPE{get;set;}
发布字符串POS_,直到{get;set;}
调整列表模型listTransactionSegment的尺寸
System.IO.StringReader StringReader=新的System.IO.StringReader(Xml);
System.Xml.Serialization.XmlSerializer XmlSerializer=新建
System.Xml.Serialization.XmlSerializer(typeof(List));
//  
listTransactionSegment=xmlSerializer。反序列化(stringReader)为
列表

此平台上有大量关于此问题的答案。请先用谷歌搜索你的问题。如:
public int RECORD_TYPE {get;set;} 
pub string POS_TILL {get;set;} 

Dim a List<TransactionSegment> Model   listTransactionSegment

System.IO.StringReader stringReader = new System.IO.StringReader(Xml);  
System.Xml.Serialization.XmlSerializer xmlSerializer = new 
System.Xml.Serialization.XmlSerializer(typeof(List<TransactionSegment>));  


//  
listTransactionSegment=xmlSerializer.Deserialize(stringReader) as 
List<TransactionSegment>;