如何正确使用XmlNamespaceManager和SelectSingleNode?

时间:2014-02-05 11:49:49

标签: c# xml xpath

我需要从xml获取节点值。 xml具有命名空间。

我有以下代码

string xml =
    "<file xmlns=\"SFAKT\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
    "<document>test</document>" +
    "</file>";

XmlDocument xmlDocument = new XmlDocument();
xmlDocument.LoadXml(xml);

XmlNamespaceManager ns = new XmlNamespaceManager(xmlDocument.NameTable);
ns.AddNamespace("sf", "SFAKT");
XmlNode node = xmlDocument.SelectSingleNode("sf:file/document");

但是node = null

你能告诉我代码中的错误在哪里吗?

1 个答案:

答案 0 :(得分:2)

您需要使用重载的SelectSingleNode方法并传入XmlNamespaceManager。此外,您还需要文档节点的sf前缀。

像这样拉出节点:

XmlNode node = xmlDocument.SelectSingleNode("sf:file/sf:document", ns);