代码之家  ›  专栏  ›  技术社区  ›  hendry

使用xmlstarlet迭代XML

  •  1
  • hendry  · 技术社区  · 14 年前

    我有以下XML:

    <?xml version="1.0" encoding="UTF-8"?>
    <test-report>
    <testsuite>
    <test name="RegisterConnection1Tests">
    <testcase name="testRregisterConnection001"></testcase>
    <testcase name="testRegisterConnection002"></testcase>
    </test>
    <test name="RegisterConnection2Tests">
    <testcase name="testRregisterConnection001"></testcase>
    <testcase name="testRegisterConnection002"></testcase>
    </test>
    </testsuite>
    </test-report>
    

    RegisterConnection1Tests,testRregisterConnection001
    RegisterConnection1Tests,testRregisterConnection002
    RegisterConnection2Tests,testRregisterConnection001
    RegisterConnection2Tests,testRregisterConnection002
    

    我不知道怎样才能像我期望的那样给孩子们看

    xmlstarlet sel -t -m 'test-report/testsuite/test' -v '@name' -v '//testcase/@name' -n $1

    RegisterConnection1TeststestRregisterConnection001
    RegisterConnection2TeststestRregisterConnection001
    
    1 回复  |  直到 14 年前
        1
  •  2
  •   Jörn Horstmann    14 年前

    -v "','" 因为每个testcase需要一行,所以我会遍历testcase元素,然后添加父元素的name属性,如下所示:

    xmlstarlet sel -t -m 'test-report/testsuite/test/testcase' -v '../@name' -v "','" -v '@name' -n $1