由分号分隔的有序XPath值

时间:2017-05-31 09:09:27

标签: xpath xpath-2.0

我有以下XML文件:

<Body>
    <ELEMENT Property1="A" Property2="B" Property3="C"/>
    <ELEMENT Property1="D" Property2="E" Property3="F"/>
    <ELEMENT Property1="G" Property2="H" Property3="I"/>
</Body>

我正在尝试让一个字符串对象具有如下所有的所有属性值:

  

A,B,C; d,E,F; G,H,I

我基本上需要用分号分隔每个ELEMENT属性。

怎么做?

2 个答案:

答案 0 :(得分:1)

您可以尝试以下表达式

string-join((string-join(//ELEMENT/@Property1, ','), string-join(//ELEMENT/@Property2, ','), string-join(//ELEMENT/@Property3, ',')), ';')

输出:

A,D,G;B,E,H;C,F,I

string-join((string-join(//ELEMENT[1]/@*, ','), string-join(//ELEMENT[2]/@*, ','), string-join(//ELEMENT[3]/@*, ',')), ';')

输出:

A,B,C;D,E,F;G,H,I

答案 1 :(得分:1)

由于我希望ELEMENT之间的属性和,之间有;,这里是未定义数量的ELEMENT所需的解决方案:

string-join(for $x in //ELEMENT return string-join($x/@*,','), ';')

结果是

  

A,B,C; d,E,F; G,H,I