2

我正在尝试使用 xpath 解析 xml 提要。提要包含如下所示的类别:

<categories>
<category id="6">Category 6</category>
<category id="12">Category 12</category>
<category id="19">Category 19</category>
</categories>

我目前使用路径“类别”来选择所有子节点,这些子节点以字符串格式返回“类别 6 类别 12 类别 19”。我希望输出类似于“Category 6, Category 12, Category 19”。我怎样才能做到这一点?我查看了 xpath 函数,但似乎没有什么适合这项任务。

我将它与 Drupal 的xpath 解析器模块一起使用

4

3 回答 3

2

纯 XPath 是:

concat(categories/category[id="6"],', ',
       categories/category[id="12"],', ',
       categories/category[id="19"])

但是如果你需要一些动态的东西,它不会很有用,我的意思是如果你不先验地categories了解孩子。

对于动态选择,请使用:

string-join(categories/*,', ')

或者

string-join(/categories/*,', ')

取决于上下文。

于 2011-06-03T08:19:17.033 回答
1

一般来说,应该使用 /categories/category xpath 选择类别节点,然后枚举节点集并显示每个节点的内容,后跟逗号(最后一个节点除外)。确切的代码取决于您使用的技术。

于 2011-06-03T07:23:23.340 回答
1

在静态未知的 XML 文档的一般情况下,仅使用纯 XPath 1.0 无法产生想要的结果——需要托管它的编程语言的一些帮助。

一个简单而纯粹的 XPath 2.0 解决方案是

string-join(/*/*,', ')
于 2011-06-03T13:12:39.893 回答