我正在尝试制作通用的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/">
答案 0 :(得分:3)
在这种情况下,它不是通用的,而是特定于您的SOAP回复类型。 ;-) 试试这个:
var ns = new XmlNamespaceManager(xml.NameTable);
ns.AddNamespace("ns", "http://tempuri.org/");
XmlNodeList nodes = xml.DocumentElement.SelectNodes("//ns:section", ns);