【问题标题】:XPath - Get node that only has children with specific attributeXPath - 获取只有具有特定属性的子节点的节点
【发布时间】:2015-07-10 15:19:17
【问题描述】:

我有一个包含类似于以下节点的 SVG 文档:

<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>

我要做的只是选择仅包含具有fill="none" 属性的子节点的&lt;g&gt; 节点。所以我试图在我的示例中找到一个仅匹配第二个 &lt;g&gt; 节点的 XPath。

我已经完成了有关堆栈溢出的谷歌搜索和搜索,但似乎没有任何效果。

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

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

感谢任何帮助

谢谢

【问题讨论】:

    标签: xpath


    【解决方案1】:

    试试:

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

    【讨论】:

    • 这仍然会选择包含fill="none"fill="#FFFFFF"&lt;g&gt; 节点。
    猜你喜欢
    • 2020-06-11
    • 2012-06-05
    • 1970-01-01
    • 2011-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多