c# - 在 XPath 表达式中声明命名空间

标签 c# .net xpath xml-namespaces xelement

我的应用程序需要根据一些 XML 数据评估 XPath 表达式。表达式由用户在运行时提供。因此,我无法创建 XmlNamespaceManager 以传递给 XPathEvaluate,因为我在编译时不知道前缀和命名空间。

是否可以在 xpath 表达式中指定 namespace 声明?


回复评论:

  1. XML 数据有一个默认命名空间,但可以有具有任何命名空间的嵌套元素。用户知道他使用的数据的命名空间。
  2. 用户提供的 xpath 表达式将针对许多 XML 文档进行评估,并且每个文档都可以为相同的命名空间拥有自己的前缀。

最佳答案

如果可以将相同的前缀绑定(bind)到不同的 namespace ,并且事先不知道前缀,那么指定此类表达式的唯一纯 XPath 方法是使用这种引用元素的形式:

someName[namespace-uri() = 'exactNamespace']

因此,一个特定的 XPath 表达式将是:

/*/a[namespace-uri() = 'defaultNS']/b[namespace-uri() = 'NSB']
                                         /c[namespace-uri() = 'defaultNS']

关于c# - 在 XPath 表达式中声明命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4861262/

相关文章:

xpath - 在同一个xpath查询中结合使用之前和之后的同级

Python:带有 lxml 和 onclick 的 xpath + 正则表达式?

C# DataGridView - 透明图像

c# - 在类中插入值而不显式写入它们

javascript - ASPX 页面上的 jQuery Datepicker()

c# - WCF 服务的 Sharepoint 2010 问题

c++ - Process.ExitCode 属性返回的退出代码不正确

c# - Lambda 不能做 Int16 比较?

c# - 比较两个对象的属性以找出差异?

Java XPath 将 '-' 解释为带 GUID 的减号