使用 XPath 连接所选子节点的值



我一直在使用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, ']')

最新更新