使用XPath返回多个节点的串联属性值字符串

时间:2014-06-05 08:40:25

标签: c xpath libxml2

我正在使用libxml2开发一个C项目。

我保留了以下格式的XML文档:

<?xml version="1.0">
<rootnode version="1.0">
    <rootchild attribute1="a" attribute2="12345678" />
    <rootchild attribute1="b" attribute2="ABCDEFGH" />
</rootnode>

我想用逗号作为分隔符来获取一串连接的attribute2值,因此对于上面的示例,字符串将为:"12345678,ABCDEFGH"

我希望使用XPath尽可能接近该字符串。到目前为止,我能做的最好的事情是使用以下表达式获取节点:/rootnode/rootchild/attribute::attribute2

string()包装上面的内容似乎只返回第一个attribute2值。

  1. 是否可以使用string()函数获取多个attribute2值?
  2. 是否可以使用XPath连接由分隔符分隔的多个值?

1 个答案:

答案 0 :(得分:1)

使用XPath 2.0,您可以使用/rootnode/rootchild/attribute::attribute2/string()获取字符串值序列或string-join(/rootnode/rootchild/attribute::attribute2, ',')到单个字符串,但libxml2仅支持XPath 1.0,因此您需要评估/rootnode/rootchild/attribute::attribute2和然后获取每个属性的字符串值并连接宿主语言(C)中的值。