一尘不染

在C#中将Xpath与默认命名空间一起使用

c#

我有一个带有默认名称空间的XML文档。我正在使用XPathNavigator使用Xpath选择一组节点,如下所示:

XmlElement myXML = ...;  
XPathNavigator navigator = myXML.CreateNavigator();
XPathNodeIterator result = navigator.Select("/outerelement/innerelement");

我没有得到任何结果:我假设这是因为我没有指定名称空间。如何在我的选择中包括名称空间?


阅读 253

收藏
2020-05-19

共1个答案

一尘不染

首先-您不需​​要导航器;SelectNodes / SelectSingleNode应该足够。

但是,您可能需要一个名称空间管理器-例如:

XmlElement el = ...; //TODO
XmlNamespaceManager nsmgr = new XmlNamespaceManager(
    el.OwnerDocument.NameTable);
nsmgr.AddNamespace("x", el.OwnerDocument.DocumentElement.NamespaceURI);
var nodes = el.SelectNodes(@"/x:outerelement/x:innerelement", nsmgr);
2020-05-19