XPath:没有特定孩子的所有div

时间:2014-11-27 19:13:11

标签: html xml xpath xpath-2.0

我有HTML文件,我用XPath解析它。我想要选择其中没有[p]标签的所有[div]节点。

例如,输入:

<div>
    <p>no1</p>
</div>
<div>
    <div>
        <p>no2</p>
    </div>
</div>
<div>
    yes!!!
</div>

预期产出:

yes!!!

我尝试过这个XPath查询,这对我不起作用:

//div[not (p)]

2 个答案:

答案 0 :(得分:1)

使用// div [not(descendant :: p)]

这是一个快速的XSL示例

<xsl:template match='/'>
<div>
<xsl:for-each select='//div[not(descendant::p)]'>
    <xsl:value-of select='.'/>
</xsl:for-each>
</div>
</xsl:template>

答案 1 :(得分:0)

xpath:

//div[not (p)]

返回示例xml中的2个div节点:

<div>  <-- This one
    <div>

和你期望的那个:

<div>
    yes!!!
</div>

您可能在查询中引用xpath,您希望只有一个节点(例如SelectSingleNode),因此只返回第一个节点。