XmlDocument.SelectSingleNode省略前缀和名称空间

时间:2012-02-23 14:21:08

标签: c# xml xmlnode selectsinglenode selectnodes

这个问题是对已回答问题的跟进: XmlDocument.SelectSingleNode and prefix + xmlNamespace issue

问题在于,将来可能会在没有警告的情况下更改收到的xml的名称空间前缀,因此我们想知道是否有任何方法可以使用SelectSingleNode但省略元素的前缀。

(我们知道我们可以删除传入xml的所有前缀,但它需要更多步骤....虽然如果提供代码我们会认为它是一个有效的答案......)

2 个答案:

答案 0 :(得分:6)

只要名称空间URI没有更改,前缀名称是否会更改无关紧要。

您在代码中使用的前缀名称和XML文档中的前缀名称不必匹配,例如。

namespaces.AddNamespace("foo", "http://exception.do29.imq.es/xsd");
XmlNode nodemsg = xmldocu.SelectSingleNode("//foo:message", namespaces);

答案 1 :(得分:1)

可以在xpath中使用*省略它,例如:

//*[local-name()='ElementName']

基于问题XPath select node with namespace

另外,这个工具对于测试不同的xpath非常有用.... http://xpathvisualizer.codeplex.com/