xml - 如何选择特定命名空间中的元素?

标签 xml xpath xml-namespaces xalan xmlspy

我在选择属于特定命名空间的元素时遇到问题。我的 xpath 表达式在 XMLSpy 中工作,但在使用 Xalan 库时失败..

<item>
   <media:content attrb="xyz">
     <dcterms:valid>VALUE</dcterms:valid>
  </media:content>
</item>

我的表情是./item/media:content/dcterms:valid .我已经将这两个 namespace 定义都添加到了我的 XSLT 中。同样,这会在 XMLSpy 中选择正确的值,但在通过 Xalan 库运行时会失败。

有任何想法吗?

最佳答案

您需要实现 org.apache.xml.utils.PrefixResolver 将前缀映射到命名空间 URI,然后将实例传递给 XPath您使用的实例。这将允许您在 XPath 表达式中使用与文档中不同的前缀(您可能无法控制)。

例如,您可以创建一个使用一对映射的实现(一个映射从前缀 -> 命名空间 URI,一个从 URI 映射到前缀)。

在 JAXP 中,要实现的等效接口(interface)是 javax.xml.namespace.NamespaceContext .

关于xml - 如何选择特定命名空间中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/187231/

相关文章:

c# - XPath 和 XPathSelectElement

PHP 使用 simpleXML 解析 georss 命名空间

c# - RestSharp Deserialize 返回空属性,但 xml.deserialize 测试有效

xml - 为什么 XML 实体名称不能以 'xml' ' 开头?

android - Animation_list must be declared 错误

java - 变压器异常 : Unknown Error In XPath

selenium - Selenium和xPath-通过包含文本来定位链接

javascript - 如何检查属性的文本是否包含部分参数标题(不区分大小写)?

html - XSLT 转换未显示任何数据

python - XML 和 Python : Get the namespaces declared in root element