Java 从选定的节点中选择节点
我正在解析一个很大的XML文件 我的第一个selectNodes语句为我提供了一个要解析的所有元素的列表 对于第一个selectNodes语句返回的每个元素,我想运行另一个selectNodes XML可能如下所示:Java 从选定的节点中选择节点,java,xml,xpath,dom4j,Java,Xml,Xpath,Dom4j,我正在解析一个很大的XML文件 我的第一个selectNodes语句为我提供了一个要解析的所有元素的列表 对于第一个selectNodes语句返回的每个元素,我想运行另一个selectNodes XML可能如下所示: <A> <B></B> <C></C> </A> <A> <B></B> <C></C> </A>
<A>
<B></B>
<C></C>
</A>
<A>
<B></B>
<C></C>
</A>
我受到限制,因为我必须解析内部节点,即“A”的每个子集,一次一个
最终目标是对每个B,C组合做一些事情,一次一个 您可以提供任何节点作为XPath表达式的上下文。假设您有一个XPath表达式来选择B节点:
XPathExpression expr = xpath.compile("./B");
假设在变量节点阳极中有一个节点。您可以简单地使用
Object result = expr.evaluate(aNode, XPathConstants.NODE);
在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(“//B”);
List cNodes=document.selectNodes(“//C”);
用于(对象b:b节点)
用于(对象c:cNodes)
//对每个b/c组合做些什么
或者,要指定要搜索的根节点,请使用:
List<?> bNodes = document.selectNodes("A//B");
List<?> cNodes = document.selectNodes("A//C");
List bNodes=document.selectNodes(“A//B”);
List cNodes=document.selectNodes(“A//C”);
其中文档是使用SAXReader读取的文件