我有一个带有默认名称空间的XML文档。我正在使用XPathNavigator使用Xpath选择一组节点,如下所示:
XmlElement myXML = ...; XPathNavigator navigator = myXML.CreateNavigator(); XPathNodeIterator result = navigator.Select("/outerelement/innerelement");
我没有得到任何结果:我假设这是因为我没有指定名称空间。如何在我的选择中包括名称空间?
首先-您不需要导航器;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);