【发布时间】:2010-09-05 21:31:07
【问题描述】:
XPath 背后的故事和对命名空间的支持是什么? XPath 作为规范是否先于命名空间?如果我有一个文档,其中元素被赋予了默认命名空间:
<foo xmlns="uri" />
似乎有些 XPath 处理器库由于命名空间的原因无法识别 //foo,而其他的则可以。我的团队考虑的选项是使用正则表达式向 XPath 添加命名空间前缀(您可以通过 XmlNameTable 添加命名空间前缀),但这似乎很脆弱,因为在节点测试方面 XPath 是一种非常灵活的语言。
是否有适用于此的标准?
我的方法有点老套,但似乎效果很好;我使用搜索/替换删除xmlns 声明,然后应用XPath。
string readyForXpath = Regex.Replace(xmldocument, "xmlns=\".+\"", String.Empty );
这是一种公平的方法还是有人以不同的方式解决了这个问题?
【问题讨论】:
标签: c# xml xpath namespaces