Найти элемент XML, доступный с помощью xlint - xpath - PullRequest
0 голосов
/ 21 марта 2019

Это мой XML, я работаю, используя xmllint (парсинг xml в файле сценария bash), чтобы найти наличие элемента в 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)

Я хочу сделать вывод 1, если testcase элемент имеет skipped дочерний элемент, иначе 0. пожалуйста, помогите мне в этом

1 Ответ

0 голосов
/ 21 марта 2019

Я хочу сделать вывод 1, если testcase элемент имеет skipped дочерний элемент в противном случае 0

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

Обратите внимание, что это работает для всего документа: "есть ли testcase с skipped child".

...