我有一个像这样的xml文件:
<record>
<AAA>aaa</AAA>
<BBB>bbb</BBB>
<CCC>ccc</CCC>
</record>
<record>
<AAA>ddd</AAA>
<BBB>eee</BBB>
<CCC>fff</CCC>
</record>
<record>
<AAA>ggg</AAA>
<BBB>hhh</BBB>
<CCC>iii</CCC>
</record>
我想得到一个字符串,其中包含该xml文件中的所有内容,例如:“aaa bbb ccc; ddd eee fff; ggg hhh iii;”
我如何用XPath表达式实现这个?也许用“for in return”?
请帮忙!谢谢!
答案 0 :(得分:3)
您很少需要使用for
来迭代节点序列,因为路径运算符/
也是如此。
所以你可以写
string-join(record/string-join(*, ' '), ';')
答案 1 :(得分:1)
怎么样
string-join((for $r in record return string-join($r/*, ' '), ''), ';')
inner for将生成一系列字符串,每一个字符串都是AAA
,BBB
,CCC
子元素的空格分隔字符串值,''
在tge序列的末尾添加一个空字符串,然后外部string-join
将用分号连接序列的项目。额外的空字符串为您提供尾随分号。
答案 2 :(得分:1)
仅是为了让您深刻了解“回报”的可能性:
for $a in //record[1], $b in //record[2], $c in //record[3]
return concat($a,";",$b,";",$c)
为了保持代码的简洁性,我无法在每个字母块之间添加空格。
答案 3 :(得分:0)
您提供的XML格式不正确(没有根元素)。提供记录元素位于root
元素内。遵循xpath表达式
/root/record/*
将选择元素AAA,BBB,CCC,AAA,BBB,CCC,AAA,BBB,CCC。然后由您来迭代结果。这显然取决于你使用的语言,所以我不能为你提供一个例子。