2 个或更多名称的 XPath 表达式 Java

xpath expression for 2 or more namespases java

提问人:Igor Antonov 提问时间:9/4/2022 最后编辑:ProphetIgor Antonov 更新时间:9/4/2022 访问量:19

问:

我需要xml文档的所有命名空间。

<out1:case<br />
  xmlns:out="http://ns1"<br />
  xmlns:out1="http://ns2" schemaVersion="1.0"><br />
</out1:case>

如果我使用:

XPathFactory.newInstance().newXPath().evaluate("namespace-uri(/*)", document.getChildNodes());

它只
返回我如何获取列表和?
"http://ns2""http://ns1""http://ns2"

Java XPath 命名空间

评论


答:

0赞 Michael Kay 9/4/2022 #1

若要获取最外层元素范围内的所有命名空间,请使用 。若要获取文档中任何位置范围内的所有命名空间,请使用 。但是 (a) 后者将包含大量重复项,并且 (b) 如果您的输入是 DOM,我不确定命名空间节点在 XPath 表达式的结果中将如何表示。/*/namespace::*//*/namespace::*

在 XPath 2.0 中,您具有更大的灵活性,例如,您可以使用 返回文档中任意位置声明的不同命名空间 URI 作为字符串序列。distinct-values(//*/namespace::*)