Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html xpath返回不带';根本不包含某个节点_Html_Xml_Xpath - Fatal编程技术网

Html xpath返回不带';根本不包含某个节点

Html xpath返回不带';根本不包含某个节点,html,xml,xpath,Html,Xml,Xpath,我正在使用xpath定位html标记。我有一个有5行的表,我想根据表行中一些表数据标记中的类来选择行 <table class="layoutDataDefinitionTable grid-row-table"> <thead/> <tbody> <tr id="row_0"/> <td data-dojo-attach-point="_iconNode"/>

我正在使用xpath定位html标记。我有一个有5行的表,我想根据表行中一些表数据标记中的类来选择行

<table class="layoutDataDefinitionTable grid-row-table">
    <thead/>
    <tbody>
        <tr id="row_0"/>
            <td data-dojo-attach-point="_iconNode"/>
            <td class="dgrid-cell-padding dgrid-no-left"/>
            <td class="dgrid-cell-padding"/>
            <td class="dgrid-cell-padding"/>
            <td class="dgrid-cell-padding"/>
            <td class="dgrid-cell-padding"/>
            <td class="dgrid-cell-padding"/>
        <tr id="row_1">
            <td data-dojo-attach-point="_iconNode" class="arrowDown"/>
            <td class="dgrid-cell-padding dgrid-no-left"/>
            <td class="dgrid-cell-padding"/>
            <td class="dgrid-cell-padding"/>
            <td class="dgrid-cell-padding"/>
            <td class="dgrid-cell-padding"/>
            <td class="dgrid-cell-padding"/>
        <tr id="row_2">
            <td data-dojo-attach-point="_iconNode"/>
            <td class="dgrid-cell-padding dgrid-no-left dgrid-cell-indent"/>
            <td class="dgrid-cell-padding"/>
            <td class="dgrid-cell-padding"/>
            <td class="dgrid-cell-padding"/>
            <td class="dgrid-cell-padding"/>
            <td class="dgrid-cell-padding"/>
        <tr id="row_3">
            <td data-dojo-attach-point="_iconNode" class="arrowDown"/>
            <td class="dgrid-cell-padding dgrid-no-left"/>
            <td class="dgrid-cell-padding"/>
            <td class="dgrid-cell-padding"/>
            <td class="dgrid-cell-padding"/>
            <td class="dgrid-cell-padding"/>
            <td class="dgrid-cell-padding"/>
        <tr id="row_4">
            <td data-dojo-attach-point="_iconNode" class="arrowDown"/>
            <td class="dgrid-cell-padding dgrid-no-left"/>
            <td class="dgrid-cell-padding"/>
            <td class="dgrid-cell-padding"/>
            <td class="dgrid-cell-padding"/>
            <td class="dgrid-cell-padding"/>
            <td class="dgrid-cell-padding"/>
    </tbody>
</table>

但这只是返回所有的行,因为每一行都有一个td,它不包含这两个类。我只希望它返回第0行。

您可以将谓词移动到
tr
,并检查所有
td
子级,查看它们是否都满足不包含所需类的条件:
//表[contains(@class,'layoutDataDefinitionTable grid row table')]/tbody/tr[not(contains(td/@class,'dgrid cell padding dgrid no left dgrid cell indent'))和not(contains(td/@class,'arrowDown'))]


这将只返回id为0行的
tr
,您可以将谓词移动到
tr
,并检查所有
td
子级,查看它们是否都满足不包含所需类的条件:
//表[contains(@class,'layoutDataDefinitionTable grid row table')]/tbody/tr[not(contains(td/@class,'dgrid cell padding dgrid no left dgrid cell indent'))和not(contains(td/@class,'arrowDown'))]

这将仅返回id为第0行的
tr

$x("//table[contains(@class, 'layoutDataDefinitionTable grid-row-table')]//tbody//tr//td[not(contains(@class, 'dgrid-cell dgrid-cell-padding dgrid-no-left dgrid-cell-indent')) and not(contains(@class, 'arrowDown'))]/..");