我一直在使用XPath
连接子节点值。
我们有一个XML文件,每个文件都有一个父节点和三个子节点,我试图实现的是只获取其中两个子节点并将其值连接为CHILDNODE1 [CHILDNODE2]
例如,父节点看起来像这样
<Term>
<ID>24</ID>
<Code>abc</Code>
<Name>xyz</Name>
</Term>
XPath 呼叫: Code[Name]
结果:abc[xyz]
几乎错过了,我试图获得一个ArrayList
作为所有类似节点的结果,即不是循环这些节点并逐个连接,而是在一个 XPath 查询中获取所有这些值(不确定这是否可能)。
我想知道这是否可能,一些建议/示例会很棒。
如果无法实现起诉XPath
那么将是其他选择。
在 XPath 1.0(Java 唯一原生支持的版本)中,这仅适用于每个文件/XPath 调用的单个<Term/>
元素。
XPath 表达式
concat(/Term/Code, '[', /Term/Name, ']')
将准确返回您正在寻找的内容。
如果有多个<Term/>
节点,则必须使用 XPath (//Term
获取<Term/>
节点,使用 DOM 获取相应的子节点,并在 Java 中构造结果集。
对 XPath 2.0 的支持(例如,通过嵌入 Saxon、BaseX 或其他更强大的 XPath/XQuery 处理器),您还可以对一个文件中任意数量的<Term/>
元素执行此操作(当然,在公共父节点下):
for $term in //Term
return concat($term/code, '[', $term/name, ']')