我正在使用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值?答案 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)中的值。