2015-07-10 114 views
0

我有一个包含类似于以下节点的SVG文档节点:的XPath - 获取,只有具有特定属性的孩子

<item> 
    <g> 
     <path fill="#FFFFFF" ... ></path> 
     <path fill="none" ... ></path> 
     <ellipse fill="none" ... ></path> 
    </g> 
    <g> 
     <path fill="none" ... ></path> 
     <path fill="none" ... ></path> 
     <ellipse fill="none" ... ></path> 
    </g> 
    <g> 
     <path fill="#FFFFFF" ... ></path> 
     <path fill="#FFFFFF" ... ></path> 
     <ellipse fill="#FFFFFF" ... ></path> 
    </g> 
</item> 

我试图做的仅仅是选择仅包含<g>节点具有fill="none"属性的子项。所以我试图找到一个XPath,只匹配我的示例中的第二个<g>节点。

我已经完成了我的谷歌搜索和堆栈溢出搜索的份额,似乎没有任何工作。

我认为最接近的工作应该是给我一个错误,说它不是Google Chrome使用$x()帮手的开发人员工具中的有效XPath表达式。

*[name()="g" and descendants::*[@fill="none"]]

任何帮助表示赞赏

感谢

回答

3

尝试:

*[ name()="g" 
    and descendant::*[@fill="none"] 
    and count(descendant::*[@fill="none"]) = count(descendant::*) 
] 
+0

这仍然选择''包含节点'补= “无”'以及'补= “#FFFFFF”'。 – marcaddeo

+0

我的不好,我误读了。看到我更新的XPath –

+0

这就是诀窍!谢谢! – marcaddeo

相关问题