【问题标题】:Parsing XML response解析 XML 响应
【发布时间】:2015-03-24 06:43:45
【问题描述】:

我得到一个 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>

我将此 XML 响应保存在以下string

string response;

我想拆分字符串响应并获取一些标签的值(例如:-USERNAMESTRID_FKMERID_FK),以将其保存在其他字符串中以供进一步使用。

请帮我解决这个问题..

【问题讨论】:

    标签: c# asp.net xml string


    【解决方案1】:
    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);
    }
    

    或者如果直接尝试选择节点 xmlDoc.SelectNodes("/data/Table/USERNAME")

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

    【讨论】:

    • 感谢您的友好回复。我正在 Windows Phone 应用程序中尝试此操作... XmlDocument 和 XmlNodeLIst 类不可用。即使添加命名空间 [ using system.xml ].. 也没有效果...所有引用都包括在内...您能帮忙吗?
    【解决方案2】:

    另一种选择,这次使用 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;
    

    另一种选择是将&lt;Table&gt;...&lt;/Table&gt; 中的所有数据放入字典中,以便以后查找:

    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"];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-07
      • 2016-09-03
      • 2013-08-23
      • 2015-09-10
      相关资源
      最近更新 更多