Xpath - 选择自身或最接近的先前非空元素

时间:2016-08-22 23:56:59

标签: html xml xpath

我有以下文件:

<html>
    <body>
        <div>
            <table>
                 <tr>
                    <td>390920000</td>
                    <td>A</td>
                </tr>
                <tr>
                    <td>390920000</td>
                    <td></td>
                </tr>
                <tr>
                    <td>3924100011</td>
                    <td>B</td>
                </tr>
                <tr>
                    <td>3924100011</td>
                    <td></td>
                </tr>
                <tr>
                    <td>3924100019</td>
                    <td></td>
                </tr>
                <tr>
                    <td>3924100019</td>
                    <td>C</td>
                </tr>
            </table>
        </div>
    </body>
</html>

我想要的是使用xpath选择/ html / body / div / table / tr / td [2],但是对于每个空元素,请选择前一个非空元素。因此,不要获取价值&#39; A&#39;&#39;&#39; B&#39;,&#39;&#39;&#39;&#39;&#39; &#39; C&#39;我想得到A&#39; A&#39; A&#39; B&#39; B&#39; B&#39; B&#39; B&#39; &#39; C&#39 ;.这可能吗?

不过,请注意,这是一个HTML而不是一个xml。我正在使用HtmlAgilityPack所以我创建普通的xpath表达式来选择html元素。

1 个答案:

答案 0 :(得分:0)

如果XPath 3正常,则以下内容应该有效:

//table/tr ! head((., reverse(preceding-sibling::*))[normalize-space(td[2]/text()) != ""])/td[2]