我正在使用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)中连接这些值。