xpath选择第一个孩子并检查值

米切尔(Mitchel Verschoof)

我想使用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>

伊恩·罗伯茨(Ian Roberts)

根据定义,XPath中元素的字符串值是其所有后代文本节点(即,直接包含在元素内部的所有文本或其子元素,孙子元素等)的串联。

所以,你需要检查这两者的字符串值message是“OK”message不具有任何的子元素:

/api_data/message[.="OK"][not(*)]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章