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);