-4

我有一个这样的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 表达式来实现呢?也许用“作为回报”?

请帮忙!谢谢!

4

4 回答 4

4

您很少需要使用for来遍历节点序列,因为路径运算符/也是如此。

所以你可以写

string-join(record/string-join(*, ' '), ';')
于 2013-05-30T22:36:31.300 回答
1

怎么样

string-join((for $r in record return string-join($r/*, ' '), ''), ';')

内部 for 将生成一个字符串序列,每个字符串是AAA, BBB,CCC子元素的空格分隔的字符串值,''在 tge 序列的末尾添加一个空字符串,string-join然后外部将连接序列中的项目分号。额外的空字符串为您提供尾随分号。

于 2013-05-30T22:15:29.667 回答
1

只是为了让您了解“换取回报”的可能性:

    for $a in //record[1], $b in //record[2], $c in //record[3]
    return concat($a,";",$b,";",$c)

我不能在每个字母块之间添加空格,以保持代码的简单性。

于 2019-01-29T23:50:17.847 回答
0

您提供的 XML 格式不正确(没有根元素)。提供记录元素在元素内部root。遵循 xpath 表达式

/root/record/*

将选择元素 AAA、BBB、CCC、AAA、BBB、CCC、AAA、BBB、CCC。然后由你来迭代结果。这显然取决于您使用的语言,因此我无法为您提供示例。

于 2013-05-30T22:14:40.933 回答