XPath匹配元素,不包含指定的后代

时间:2014-02-18 09:50:47

标签: xml xpath

我有一个具有多级结构的XML文件(它是一个包含文件的目录结构,因此有<directory name="..."><file name="...">个元素)

我想用XPath选择空目录,但我不知道,如何选择没有一些后代的节点。 我可以匹配ns:directory[not(ns:file)],但它只是emtpy目录的第一级,我不想做ns:directory[not(ns:file)]|ns:directory[ns:directory[not(ns:file)]]|...

之类的任何事情

有人可以暗示,怎么做?

2 个答案:

答案 0 :(得分:1)

易。

//ns:directory[not(.//ns:file)]

答案 1 :(得分:0)

上面的答案将排除仅包含目录的目录。如果这就是你想要的,那很好。如果您要查找完全为空的目录,请尝试以下操作:

//ns:directory[not(ns:file|ns:directory)]