【问题标题】:C# XML can no get sub-sub-sub nodeC# XML 无法获取 sub-sub-sub 节点
【发布时间】:2013-10-09 00:08:39
【问题描述】:

我需要获取一些复杂的 XML 就像:

<Response xmlns="http://somewhere/somewhere/">
<Params>
<Param>
<Name>some data</Name>
<Value xmlns="">abcdedsfeesfxyz0123456789</Value>
</Param>
<Param>
<Name>Target</Name>
<Value xmlns="">xml</Value>
</Param>
<Param>
<Name>Platform</Name>
<Value xmlns="">Mobile</Value>
</Param>
</Params>
<Results>
<Groups>
<Group>
<Key>ABCWXYZ0123456789</Key>
<TotalCount>1208</TotalCount>
<Useful>...</Useful>
</Group>
</Groups>
</Results>
</Response>

对我有用的数据在&lt;Useful&gt;...&lt;/Useful&gt;

然后我尝试获取第一层:

    String returnXML = client.DownloadString(strUrl);
    XmlDocument xdoc = new XmlDocument();
    xdoc.LoadXml(returnXML);
    XmlNode xmlData = xdoc.SelectSingleNode("Response");

xmlData中没有数据

谢谢

【问题讨论】:

    标签: c# xml


    【解决方案1】:

    Response 元素定义了一个默认命名空间。

    &lt;Response xmlns="http://somewhere/somewhere/"&gt;

    您需要在传递给 SelectSingleNode 的 XPath 表达式中解析此命名空间。您可以使用 XmlNamespaceManager 完成此操作:

    XmlDocument xdoc = new XmlDocument();
    xdoc.LoadXml(returnXml);
    
    var mng = new XmlNamespaceManager(xdoc.NameTable);
    mng.AddNamespace("foo", "http://somewhere/somewhere/");
    
    XmlNode xmlData = xdoc.SelectSingleNode("foo:Response",mng);
    

    参见 MSDN:http://msdn.microsoft.com/en-us/library/h0hw012b.aspxhttp://msdn.microsoft.com/en-us/library/d271ytdx.aspx

    【讨论】:

      【解决方案2】:

      我觉得这行得通!

      XmlNodeList myElemList = xdoc.GetElementsByTagName("Usful");
      

      【讨论】:

      • 那是因为标签名没有考虑命名空间。一个 Xml 名称有两个部分;命名空间和本地名称。命名空间可以为空。更好地理解 xml 命名空间并从那里开始。
      【解决方案3】:

      您必须使用XmlNamespaceManager,因为您声明了命名空间(这一​​行xmlns="http://somewhere/somewhere/")。

      查看这个问题的答案XmlNode in XmlNodelist

      了解 Xml 命名空间将极大地帮助您。试试这篇文章。 http://www.jclark.com/xml/xmlns.htm

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-02
        • 1970-01-01
        • 2017-03-25
        • 2017-01-17
        • 2023-02-14
        相关资源
        最近更新 更多