gpt4 book ai didi

java - Dom4j selectNodes(arg) 不给出节点列表

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:14:11 29 4
gpt4 key购买 nike

我在 Java 中使用 DOM4j 处理 XML,我的 xml 是这样的:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<abcd name="ab.catalog" xmlns="http://www.xyz.com/pqr" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.xyz.com/pqr ./abc.xyz.xsd">
<efg>
......
</efg>
<efg>
.....
</efg>
</abcd>

然后,

List<Node>list = document.selectNodes("/abcd/efg");

获取列表零的大小。我觉得这是由于 xml 中指定的命名空间。我尝试了很多但没有成功。

最佳答案

XPath 表达式中未加前缀的元素名称指的是不在命名空间中的元素 - 它们不考虑文档中声明的“默认”xmlns="..." 命名空间。您需要在 XPath 引擎中为命名空间声明一个前缀,然后在表达式中使用该前缀。这是一个受 the DOM4J javadocs 启发的示例:

Map uris = new HashMap();
uris.put("pqr", "http://www.xyz.com/pqr");
XPath xpath = document.createXPath("/pqr:abcd/pqr:efg");
xpath.setNamespaceURIs(uris);
List<Node> nodes = xpath.selectNodes(document);

关于java - Dom4j selectNodes(arg) 不给出节点列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14317384/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com