c#XmlDocument SelectNodes不返回节点

时间:2015-04-02 10:30:23

标签: c# xpath xmldocument selectnodes

我正在尝试制作通用的XmlParsing方法。拿这个Xml:

<body>
<section>
    <subsection1>
        ...
    </subsection1>
    <subsection2>
        ...
    </subsection2>
</section>
<section>
    <subsection1>
        ...
    </subsection1>
    <subsection2>
        ...
    </subsection2>
</section>
</body>

我试图抓住所有“节”节点而不知道它们有多深或它们的父节点名称。

到目前为止,我(我的XML是字符串格式)

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

        XmlNodeList nodes = xml.DocumentElement.SelectNodes("//section");

然而,节点数始终为0.我的印象是“//”前缀会在文档中搜索名为的节点。

我真正的XML是SOAP回复:

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">


<soap:Body>
    <Response xmlns="http://tempuri.org/">

1 个答案:

答案 0 :(得分:3)

在这种情况下,它不是通用的,而是特定于您的SOAP回复类型。 ;-) 试试这个:

var ns = new XmlNamespaceManager(xml.NameTable);
ns.AddNamespace("ns", "http://tempuri.org/");
XmlNodeList nodes = xml.DocumentElement.SelectNodes("//ns:section", ns);