用XPath排除内部子元素?

时间:2016-05-10 08:54:55

标签: dom xpath

请考虑以下结构:

<Table>
    <TR>
        <TD>
            <Table>
                <TD></TD>
            </Table>
        </TD>
        <TD>Value 1</TD>
        <TD>Value 2</TD>
        <TD>Value 3</TD>
        <TD></TD>
   </TR>
</Table>

我希望获得<TD>个节点的列表,但前提是它没有子节点(或者在这个特定示例中没有名为'table'的子节点)。我尝试使用<TD><TABLE>选项 - not过滤额外的//table/tr[not(td/table)]节点,但我得到一个空对象。最终结果应该是一个包含4 <TD>个对象的列表(值1到3,下面是空的)。我该怎么办?

1 个答案:

答案 0 :(得分:2)

您可以选择下面没有孩子$country->name[intval($this->context->cookie->id_lang)];的{​​{1}}元素:

<td>

但您无法选择<table>元素,不包括包含//table/tr/td[not(table)] 的参数<tr>。 XPath只能选择源XML中存在的部分。特别是,没有这样的<td>元素在XML中只包含4个<table>