我正在解析一个大型 XML 文件。
我的第一个 selectNodes 语句获取了我想要解析的所有元素的列表。
对于第一个 selectNodes 语句返回的每个元素,我想运行另一个 selectNodes。
XML 可能如下所示:
<A>
<B></B>
<C></C>
</A>
<A>
<B></B>
<C></C>
</A>
我受到限制,因为我必须一次解析内部节点,即“A”的每个子集。
最终目标是对每个 B、C 组合做一些事情,一次一个。
最佳答案
在 xPath 中,您可以使用双斜杠 (//) 查找父节点中具有特定名称的所有节点。如果您希望返回文档中的所有节点,您的表达式可以以“//”开头。
要返回单独列表中的所有 B 节点和所有 C 节点,请尝试:
List<?> bNodes = document.selectNodes("//B");
List<?> cNodes = document.selectNodes("//C");
for (Object b : bNodes)
for (Object c : cNodes)
//do something with each b/c combination
或者,要指定要搜索的根节点,请使用:
List<?> bNodes = document.selectNodes("A//B");
List<?> cNodes = document.selectNodes("A//C");
Document 是您使用 SAXReader 读取的文件。
关于java - 从节点选择中选择节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11872700/