【问题标题】:Reading XML nodes causing issues读取 XML 节点导致问题
【发布时间】:2015-12-21 10:41:59
【问题描述】:

我有一个 XML 字符串,我正在尝试使用 C# 读取它,但我没有得到子节点。我将整个 XML 作为内部 XML 字符串。我无法读取节点。这是我的 XML 字符串和代码。

<Filters FilterName="706337_test">
    <MemberName>Dorvil</MemberName>
    <MemberId />
    <ProviderName />
    <ProviderId>706337</ProviderId>
    <SelectedProjects>5030003</SelectedProjects>
    <CNAChartSelected>false</CNAChartSelected>
    <OldProject>false</OldProject>
</Filters>

C# 代码尝试读取 XML 节点

XmlDocument xml = new XmlDocument();
xml.LoadXml(xmlstring);
XmlNodeList xnList = xml.SelectNodes("/Filters");

我只能看到一个过滤的子节点,我需要读取MemberId、MemberName等,如何读取?

【问题讨论】:

    标签: c# xml xml-parsing


    【解决方案1】:

    这是因为你在 SelectNodes 中的字符串是错误的:

    var xml = new XmlDocument();
    xml.LoadXml(xmlstring);
    var xnList1 = xml.SelectNodes("/Filters");      //list of 1 element
    var xnList2 = xml.SelectNodes("/Filters/*");    //list of 7 elements
    foreach (XmlNode node in xnList2)
    {
        Console.WriteLine(node.OuterXml);
    }
    

    你也可以使用这个:

    var xElements = XElement.Parse(xmlstring).Elements();
    foreach (var element in xElements)
    {
        Console.WriteLine(element);
    }
    

    【讨论】:

      【解决方案2】:

      你需要告诉应用读取哪些节点..

      XmlDocument xml = new XmlDocument();
                          xml.LoadXml(xmlstring);
      
                          XmlNodeList xnList = xml.SelectNodes("/Filters");
      foreach (XmlNode node in xnList)
      {    
          string memberName = node["MemberName"].InnerText;
      }
      

      这让应用程序知道读取 MemberName 节点内的内容。对其他节点执行相同操作并回发您的结果。边走边调试,看看你从每个节点得到了什么。

      【讨论】:

        猜你喜欢
        • 2020-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-13
        • 1970-01-01
        • 2015-10-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多