我有这样的XML:
<xml>
<...>
<...>
<test name="Test A">
...
<status status="PASS">
</test>
<test name="Test B">
...
<status status="FAIL">
</test>
<test name="Test C">
...
<status status="PASS">
</test>
</xml>
我想在一个XPath中选择已通过测试的名称:"Test A", "TestC"
现在我必须使用XPath并且不知道如何将它们组合在一起。
xpath_tests_name = "//tests/@name'
xpath_passed_tests = "//test[status[@status='PASS']]"
我知道我可以在同一个循环中完成它:首先通过测试,并为每个传递得到它的名字。
然而,我正在寻找最美丽的&#34;溶液
答案 0 :(得分:2)
我不知道我是否理解你,但如果你想要一个特定的人,请这样做:
//status[@status="PASS"]/parent::test[@name="Test A"]
所有名字都是PASS:
//status[@status="PASS"]/parent::test/@name
我希望这会有所帮助。
答案 1 :(得分:2)
然而,我正在寻找最美丽的&#34;溶液
写这个表达的方式更直接(也更美丽,在我个人看来)是
/xml/test[status/@status = 'PASS']/@name
表达式返回一组属性节点。要提取它们的值,您可能需要进一步处理它们,具体取决于您的XPath环境。