使用xlint查找可用的XML元素-xpath

时间:2019-03-21 13:01:37

标签: xml xpath xmllint

这是我的XML,我正在使用xmllint(在bash脚本文件中解析xml)来查找xml中的元素。

<testsuite name="com.myapp.testcases.loginTest">

    <testcase name="invalidIdTest" classname="com.myapp.testcases.loginTest" time="0.002">
        <skipped/>
    </testcase>

    <testcase name="invalidTokenTest" classname="com.myapp.testcases.loginTest" time="4.164"/>

    <testcase name="connectAndDisconnectTest" classname="com.myapp.testcases.loginTest" time="13.622">
    </testcase>
    <testcase name="invalidServerUrlTest" classname="com.myapp.testcases.loginTest" time="40.072"/>
</testsuite>

我想找出testcase元素是否有子元素skipped? 如果我尝试执行以下命令,但它为所有4个testcase元素提供了空输出。

val=$(xmllint --xpath 'string(testsuite/testcase/*[local-name()="skipped"])' skipped.xml)
echo $val

并对此进行了尝试

isSkipped=$(xmllint --xpath "string(/testsuite/testcase[$i][skipped])" skipped.xml)

如果testcase元素具有skipped子元素,否则我想打印1。 请帮助我

1 个答案:

答案 0 :(得分:0)

  

如果testcase元素具有skipped子元素,我想打印1   否则为0

number(boolean(/testsuite/testcase[skipped]))

请注意,这适用于整个文档:“是否有testcase带有skipped个孩子”。