C# Xml SelectSingleNode returns 空
C# Xml SelectSingleNode returns null
我有这个 xml 并想从 xml
中提取第一个国家/地区
<string xmlns="http://www.webserviceX.NET">
<NewDataSet>
<Table>
<Country>Hong Kong</Country>
<City>Cheung Chau</City>
</Table>
<Table>
<Country>Hong Kong</Country>
<City>Hong Kong Inter-National Airport</City>
</Table>
</NewDataSet>
</string>
这是我所做的:
value = xml.DocumentElement.SelectSingleNode("string/NewDataSet/Table[1]/Country").InnerText;
这总是抛出未设置到对象实例的异常,因为 selectsinglenode 总是返回 null。奇怪的是我已经使用 this 测试了这个 xpath,它确实 return 我想要的节点。
我用谷歌搜索找到解决方案,发现 this 建议我必须添加命名空间,我是这样做的:
var nsmgr = new XmlNamespaceManager(xml.NameTable);
nsmgr.AddNamespace("string", "http://www.webserviceX.NET");
var node = xml.DocumentElement.SelectSingleNode("string/NewDataSet/Table[1]/Country", nsmgr);
我仍然有同样的例外。有人可以让我知道我在这里做错了什么吗?谢谢:)
只需使用XmlNamespaceManager
XmlNamespaceManager namespaces = new XmlNamespaceManager(xdoc.NameTable);
namespaces.AddNamespace("sp", "http://www.webserviceX.NET");
var nodes = xdoc.DocumentElement.SelectSingleNode("//sp:NewDataSet/sp:Table[1]/sp:Country", namespaces);
我有这个 xml 并想从 xml
中提取第一个国家/地区<string xmlns="http://www.webserviceX.NET">
<NewDataSet>
<Table>
<Country>Hong Kong</Country>
<City>Cheung Chau</City>
</Table>
<Table>
<Country>Hong Kong</Country>
<City>Hong Kong Inter-National Airport</City>
</Table>
</NewDataSet>
</string>
这是我所做的:
value = xml.DocumentElement.SelectSingleNode("string/NewDataSet/Table[1]/Country").InnerText;
这总是抛出未设置到对象实例的异常,因为 selectsinglenode 总是返回 null。奇怪的是我已经使用 this 测试了这个 xpath,它确实 return 我想要的节点。
我用谷歌搜索找到解决方案,发现 this 建议我必须添加命名空间,我是这样做的:
var nsmgr = new XmlNamespaceManager(xml.NameTable);
nsmgr.AddNamespace("string", "http://www.webserviceX.NET");
var node = xml.DocumentElement.SelectSingleNode("string/NewDataSet/Table[1]/Country", nsmgr);
我仍然有同样的例外。有人可以让我知道我在这里做错了什么吗?谢谢:)
只需使用XmlNamespaceManager
XmlNamespaceManager namespaces = new XmlNamespaceManager(xdoc.NameTable);
namespaces.AddNamespace("sp", "http://www.webserviceX.NET");
var nodes = xdoc.DocumentElement.SelectSingleNode("//sp:NewDataSet/sp:Table[1]/sp:Country", namespaces);