用于处理示例HTML片段的最佳XPath查询

时间:2014-01-30 02:59:32

标签: xpath

我有一个输出HTML的Feed。以下段是输出

的一部分
<div class="leftnav">
    <table border="0" cols="2">

        <tr>
            <td colspan="2" class="topline"><span style="font-size: 1px">&nbsp;</span></td>
        </tr>
        <tr>
            <td colspan="2"><span class="bold">Article Cat1 </span></td>
        </tr>
        <tr>
            <td class="date" colspan="2">
               ArticleTitle1</td>
        </tr>
        <tr>
            <td width="20"></td>
            <td class="date">
                ArticleLink1
            </td>
        </tr>

        <tr>
            <td colspan="2" class="topline"><span style="font-size: 1px">&nbsp;</span></td>
        </tr>
        <tr>
            <td colspan="2"><span class="bold">Article Cat2 </span></td>
        </tr>
        <tr>
            <td class="date" colspan="2">
               ArticleTitle2</td>
        </tr>
        <tr>
            <td width="20"></td>
            <td class="date">
                ArticleLink2
            </td>
        </tr>
    </table>
</div>        

我想使用XPATH处理上面的段,以便输出看起来像这样

  

文章Cat1                  ArticleTitle1                                 ArticleLink1 Article Cat2                  ArticleTitle2                                  ArticleLink2

产生所需输出的最佳XPATH是什么?我尝试了//div[@class="leftnav"]/table/tr,但这给了所有TR元素。我想跳过第一个TR元素,这样我就可以得到上面描述的格式的输出。

2 个答案:

答案 0 :(得分:0)

//div[@class="leftnav"]/table/tr[position() > 1]

试试上面的

答案 1 :(得分:0)

愚蠢的简单方法:

substring-after(normalize-space(string(//*:div)), normalize-space(string(//*:div/*:table/*[1])))

结果:“文章Cat1 ArticleTitle1 ArticleLink1 nbsp Article Cat2 ArticleTitle2 ArticleLink2”

我不知道为什么,但是(position() > 1)在我的环境中不起作用,所以我使用了字符串。