如果我们有一个 XML 文档:
<?xml version="1.0" encoding="utf-8"?>
<STICKERINFO>
<ORDER>
<NUMBER>0171467783</NUMBER>
<STICKER>
<ARTICLE>03359140001</ARTICLE>
</STICKER>
<STICKER>
<ARTICLE>11408038001</ARTICLE>
</STICKER>
</ORDER>
<ORDER>
<NUMBER>0171473000</NUMBER>
</ORDER>
</STICKERINFO>
我可以检查 /STICKERINFO/ORDER/STICKER/ARTICLE
是否存在:
boolean(/STICKERINFO/ORDER/STICKER/ARTICLE)
但是我如何检查/STICKERINFO/ORDER/STICKER/ARTICLE 是否存在于 all /STICKERINFO/ORDER/
中?
在当前示例中,XPATH 表达式应返回 false
最佳答案
此 XPath 1.0(以及 XPath 2.0)表达式:
boolean(/STICKERINFO/ORDER[not(STICKER/ARTICLE)])
产生true()
当至少有一个/STICKERINFO/ORDER
时没有 STICKER/ARTICLE
的元素后裔。
因此,您要查找的(其中一个)XPath 表达式是:
not(/STICKERINFO/ORDER[not(STICKER/ARTICLE)])
说明:
这是 Double Negation Law 的一个简单应用程序。 :)
关于xml - 如何通过 XPATH 检查元素是否存在于所有父元素中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12853882/