C# 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 ответ

В этом случае это не является общим, но специфическим для вашего вида SOAP-ответов.;-) Попробуй это:

var ns = new XmlNamespaceManager(xml.NameTable);
ns.AddNamespace("ns", "http://tempuri.org/");
XmlNodeList nodes = xml.DocumentElement.SelectNodes("//ns:section", ns);
Другие вопросы по тегам