2

这个问题是已回答问题的后续: XmlDocument.SelectSingleNode and prefix + xmlNamespace issue

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

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

4

2 回答 2

6

只要命名空间 URI 不改变,前缀名称是否改变并不重要。

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

namespaces.AddNamespace("foo", "http://exception.do29.imq.es/xsd");
XmlNode nodemsg = xmldocu.SelectSingleNode("//foo:message", namespaces);
于 2012-02-23T14:24:06.290 回答
3

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

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

基于问题XPath select node with namespace

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

于 2012-02-23T14:38:50.270 回答