简体   繁体   English

解析XML响应

[英]Parsing XML response

I got an XML response as: 我得到的XML响应为:

 <Resp>
<status>00</status>
<errorcode></errorcode>
<errordescr></errordescr>
<data>
    <Table>
        <USERNAME>Name</USERNAME>
        <ACCLOCK>N</ACCLOCK>
        <EMAILID>Samplemail@gmail.com</EMAILID>
        <LASTLOGINDATE>23-03-2015 12:35:40</LASTLOGINDATE>
        <LOGINSTATUS>N</LOGINSTATUS>
        <MOBILENO>9848022338</MOBILENO>
        <PASSWORD>Abcd@1234</PASSWORD>
        <PWDCOUNT>0</PWDCOUNT>
        <PWDVALIDTO>12-05-2015 12:18:10</PWDVALIDTO>
        <DESCRIPTION>Shop Person</DESCRIPTION>
        <STATUS>Y</STATUS>
        <USRID_FK>100017</USRID_FK>
        <ROLE>12</ROLE>
        <COUNTRY>61</COUNTRY>
        <MERID_FK>100002</MERID_FK>
        <GENDER>0</GENDER>
        <COUNTRY1>61</COUNTRY1>
        <STATE>0</STATE>
        <DOB>12-02-1997</DOB>
        <STRID_FK>10025</STRID_FK>
    </Table>
</data>

I am saving this XML response in the following string : 我将此XML响应保存在以下string

string response;

I want to split the string response and get values of some tags (EX:- USERNAME , STRID_FK , MERID_FK ), to save it in other strings for further usage. 我想拆分字符串响应并获取某些标签(例如USERNAMESTRID_FKMERID_FK )的值,以将其保存在其他字符串中以STRID_FK MERID_FK使用。

Please help me with this .. 请在这件事上给予我帮助 ..

XmlDocument xml = new XmlDocument();
xml.LoadXml(myXmlString);

XmlNodeList xnList = xml.SelectNodes("/data/Table");
foreach (XmlNode xn in xnList)
{
  string USERNAME= xn["USERNAME"].InnerText;
  string STRID_FK= xn["STRID_FK"].InnerText;
  string MERID_FK= xn["MERID_FK"].InnerText;
  Console.WriteLine("Name: {0, {1}, {2}", USERNAME, STRID_FK,MERID_FK);
}

or if try directly to select node xmlDoc.SelectNodes("/data/Table/USERNAME") or 或直接尝试选择节点xmlDoc.SelectNodes("/data/Table/USERNAME")

XmlNodeList nodes= doc.GetElementsByTagName("USERNAME"); 

Another option, this time using Linq to Xml: 另一个选择,这次使用Linq to Xml:

var yourXml = XElement.Parse (response); // Parse the response

// Look up specific values by name:
var username = yourXml.Descendants().First(node => node.Name == "USERNAME").Value;

Yet another option is to put all the data from <Table>...</Table> into a dictionary for easy lookup later: 另一个选择是将<Table>...</Table>所有数据放入字典中,以便以后查找:

var dict = yourXml.Descendants()
                  .Where(node => node.Name == "Table")
                  .Descendants()
                  .ToDictionary(node => node.Name.ToString(), node => node.Value);

// Look up value using "USERNAME" as key:
var exampleUsername = dict["USERNAME"];

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM