首页 > 解决方案 > XPath 从笔记列表中选择子笔记并连接所有文本节点

问题描述

 <categoryPath>
            <category>
                <id>01</id>
                <name>one</name>
            </category>
            <category>
                <id>02</id>
                <name>two</name>
            </category>
            <category>
                <id>03</id>
                <name>three</name>
            </category>
            <category>
                <id>04</id>
                <name>four</name>
            </category>
  </categoryPath>

如上所示,我有一个 XML 结构。谁能帮助我如何编写可以产生以下结果的 XPath?请注意,类别节点的数量是动态的,值可以是任何值。XPath 应该考虑任意数量的可用类别元素(不固定)。

一 -> 二 -> 三 -> 四

标签: xpathxpath-2.0xpath-1.0

解决方案


使用 XPath 2.0,string-join(//category/name,",")将输出 :one,two,three,four但我不确定您的软件是否支持此功能。

使用 XPath 1.0,由于您不知道category元素的数量,您可以编写一个最多支持 10 个元素的表达式(如果需要,可以添加更多):

substring-before(concat(//category[1]//name,",",//category[2]//name,",",//category[3]//name,",",//category[4]//name,",",//category[5]//name,",",//category[6]//name,",",//category[7]//name,",",//category[8]//name,",",//category[9]//name,",",//category[10]//name),",,")

输出 :one,two,three,four


推荐阅读