我想使用xpath进行单元测试,我想做的是:
<?xml version="1.0"?>
<api_data>
<message>OK</message>
<status>200</status>
<data>
<name>John</name>
<email>[email protected]</email>
</data>
</api_data>
现在,我要检查名称是否为john
,电子邮件是否为[email protected]
xpath查询: /api_data[message="OK"]
这很好用,现在是下一个示例:
<?xml version="1.0"?>
<api_data>
<message><value>OK</value></message>
<status><value>200</value></status>
<data>
<name><value>John</value></name>
<email><value>[email protected]</value></email>
</data>
</api_data>
xpath查询: /api_data[message="OK"]
而且这仍然匹配..但是我不想要..所以我想要更严格..但是如何?
我不想与值子项匹配,因此仅匹配不带值子项的匹配项 <value>
根据定义,XPath中元素的字符串值是其所有后代文本节点(即,直接包含在元素内部的所有文本或其子元素,孙子元素等)的串联。
所以,你需要检查这两者的字符串值message
是“OK”和该message
不具有任何的子元素:
/api_data/message[.="OK"][not(*)]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句