在C#中使用带有默认名称空间的XPath

在C#中使用带有默认名称空间的XPath

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

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

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


当年话下
浏览 489回答 3
3回答

ITMISS

首先,您不需要导航器;SelectNodes/SelectSingleNode就足够了。但是,您可能需要一个名称空间管理器-例如:XmlElement el = ...; //TODOXmlNamespaceManager nsmgr = new XmlNamespaceManager(     el.OwnerDocument.NameTable);nsmgr.AddNamespace("x", el.OwnerDocument.DocumentElement.NamespaceURI);     var nodes = el.SelectNodes(@"/x:outerelement/x:innerelement", nsmgr);

蝴蝶不菲

您可能需要尝试XPathVisualizer工具来帮助您度过难关。XPathVisualizer是免费的,很容易使用。注意事项:如果您使用的是Windows 7/8,并且看不到“文件”、“编辑”和“帮助”菜单项,请按ALT键。
打开App,查看更多内容
随时随地看视频慕课网APP