我有一些通过默认转换JSON响应流生成的XML,因此没有声明名称空间。我现在想要使用SelectSingleNode方法从该XML检索特定节点,但不能指定命名空间,因为没有指定。我应该用什么来注册命名空间?
我的XML看起来像这样:
<root type="object">
<customer type="object">
<firstName type="string">Kirsten</firstName>
<lastName type="string">Stormhammer</lastName>
</customer>
</root>
我尝试的代码是:
XmlDocument document = new XmlDocument();
document.LoadXml(customerXml);
XmlNamespaceManager manager = new XmlNamespaceManager(document.NameTable);
manager.AddNamespace("x", "http://www.w3.org/TR/html4/"); // What should I use here?
XmlNode customerNode= document.SelectSingleNode("x:customer");
这总是返回null。
我也尝试使用local-name限定符(不使用命名空间管理器):
XmlDocument document = new XmlDocument();
document.LoadXml(customerXml);
XmlNode customerNode= document.SelectSingleNode("/*[local-name()='root']/*[local-name()='customer']");
这也会返回null。
答案 0 :(得分:2)
然后你可以用更简单的方式做,不涉及XmlNamespaceManager
和命名空间前缀:
XmlDocument document = new XmlDocument();
document.LoadXml(customerXml);
XmlNode customerNode= document.SelectSingleNode("/root/customer");
<强> [.NET fiddle demo] 强>