我正在使用一个生成 XML 的测试工具,如下所示
<detail>
<results>
<component>A</component>
<test>
<property>performance</property>
<result>FAIL</result>
</test>
<test>
<property>memory</property>
<result>PASS</result>
</test>
</results>
<results>
<component>B</component>
<test>
<property>files</property>
<result>PASS</result>
</test>
<test>
<property>handles</property>
<result>FAIL</result>
</test>
</results>
</detail>
Run Code Online (Sandbox Code Playgroud)
请注意,每个结果元素包含 1 个组成元素和 0-*测试元素。我想获取每个详细信息>结果>组件和详细信息>结果>测试>属性的文本,其中详细信息>结果>测试>结果文本为“失败”。
有没有 XPath 表达式可以做到这一点?
如果没有,是否有一个简单的 XSLT 可以将示例转换为我可以导入到电子表格中的内容,例如
A,performance,FAIL
A,memory,PASS
B,files,PASS
B,handles,FAIL
Run Code Online (Sandbox Code Playgroud)
小智 5
此 Xpath 将为您提供失败的属性:
//detail/results/test[result = 'FAIL']/property
Run Code Online (Sandbox Code Playgroud)
这将为您提供部分失败的组件的名称:
//detail/results[test/result = 'FAIL']/component
Run Code Online (Sandbox Code Playgroud)
结合这些,您可以找到所有失败的结果:
//detail/results[test/result = 'FAIL']
Run Code Online (Sandbox Code Playgroud)
然后在其中迭代以获取该结果中所有失败的测试并返回失败的属性:
$result/test[result = 'FAIL']/property
Run Code Online (Sandbox Code Playgroud)
我还没有使用可以测试 XSL 的机器,但是将上述 XPath 组合在一起应该不难。