使用XPath的所选子节点的Concat值

时间:2014-02-18 19:05:41

标签: java xml xpath

我一直在努力使用XPath连接子节点值。

我们有一个带有父节点和三个子节点的XML文件,我想要实现的只是获取其中两个子节点并将它们的值连接为CHILDNODE1 [CHILDNODE2]

E.g。父节点看起来像这样

  <Term>
    <ID>24</ID>
    <Code>abc</Code>
    <Name>xyz</Name>
  </Term>

XPath电话:Code[Name]

结果:abc[xyz]

几乎没有提及,我试图获得ArrayList作为所有类似节点的结果,即不是循环遍历这些节点并逐个连接,而是在一个XPath查询中获取所有这些值(不是确定甚至可能。)

我想知道这是否可行,一些建议/例子真的很棒。

如果无法实现起诉XPath那么将是其他选择。

1 个答案:

答案 0 :(得分:1)

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, ']')