java - 从节点选择中选择节点

标签 java xml xpath dom4j

我正在解析一个大型 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/

相关文章:

java - 我如何制作这个图形用户界面?

java - 应该返回值的方法可以像不返回任何内容(void)的方法一样使用吗?

JavaCC - XPath 解析器

java - 符号已定义。使用 JAXB 属性解决冲突

java - 堆栈、队列和从文件中读取数学......奇怪的输出

JavaFX - 将文本文件中的歌曲对象字段加载到歌曲的 ArrayList 中

java - 如何访问android子类中的主要 Activity 上下文

c# - 关于c#中的xml

xml - XSLT - 使用 XPath 计算子元素的数量

html - 使用 XPATH 识别背景色 rgb 上的对象