XPath with Java - 选择子标签之间的文本值

时间:2011-02-15 09:17:26

标签: java xml xhtml xpath

我正在处理这个html代码段:

<p class="pageSelector">
    <a href="/BlaBla">&lt; Prev</a>&nbsp;
    <a href="/BlaBla">1</a>&nbsp;
    <a href="/BlaBla">2</a>&nbsp;
    <a href="/BlaBla">3</a>&nbsp;
    4&nbsp;
    <a href="/BlaBla">5</a>&nbsp;
    <a href="/BlaBla">6</a>&nbsp;
    <a href="/BlaBla">Next &gt;</a>&nbsp;
</p>

渲染(或多或少)为&lt;上一页1 2 3 4 5 6下一页&gt;

我想选择“4”,因为我需要发现“当前”页面。使用

//p[@class='pageSelector']/text()[normalize-space()]

(使用Firefox XPath Ckecker测试)我知道我已经解决了但是没有,因为我获得了7场比赛。

任何人都可以告诉我我哪里错了? 谢谢

2 个答案:

答案 0 :(得分:3)

normalize-space删除空格,但是不打破空格字符(尽管它的视觉外观)不被认为是用于此目的的空白。所以我会这样做

text()[translate(., '&#x20;&#x09;&#x0a;&#x0d;&#xa0;', '')]

将返回包含除空格或无间隔空格之外的字符的子文本节点;然后,您可能需要进一步处理以提取所需内容的一部分。

答案 1 :(得分:0)

如果您使用xslt,则可以使用

将更多模板应用于标签
<xsl:template match="p[@class='pageSelector']/a/text()[normalize-space()]">
</xsl:template>

这意味着你的左边只有4