首页 文章

如何使用XPath“for”表达式?

提问于
浏览
-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表达式实现它?也许用“for in return”?

请帮忙!谢谢!

4 回答

  • 0

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

    /root/record/*
    

    将选择元素AAA,BBB,CCC,AAA,BBB,CCC,AAA,BBB,CCC . 然后由您来迭代结果 . 这显然取决于你使用的语言,所以我不能为你提供一个例子 .

  • 1

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

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

    我无法在每个字母块之间添加空格,以保持代码的简单性 .

  • 3

    怎么样

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

    inner for将生成一个字符串序列,每个字符串是 AAABBBCCC 子元素的空格分隔字符串值, '' 将空字符串添加到tge序列的末尾,然后外部 string-join 将加入用分号表示序列的项目 . 额外的空字符串为您提供尾随分号 .

  • 0

    您很少需要使用 for 迭代节点序列,因为路径运算符 / 也是如此 .

    所以你可以写

    string-join(record/string-join(*, ' '), ';')
    

相关问题