我正在使用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值。
是否可以使用string()函数获取多个attribute2值?
是否可以使用XPath连接由分隔符分隔的多个值?

最佳答案

对于XPath 2.0,您可以使用/rootnode/rootchild/attribute::attribute2/string()来获取字符串值序列,或者使用string-join(/rootnode/rootchild/attribute::attribute2, ',')来获取单个字符串,但是libxml2只支持XPath 1.0,因此您需要计算/rootnode/rootchild/attribute::attribute2,然后获取每个属性的字符串值,并在宿主语言(C)中连接这些值。

10-02 04:22