2011-02-15 91 views
3

我正在這個HTML片段之間的文本值:的XPath與Java - 選擇子標記

<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> 

呈現爲(或多或少)<一個1 2 3 5 6下一頁>

我想選擇「4」,因爲我需要發現'當前'頁面。使用

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

(使用Firefox XPath Ckecker測試)我認爲我已經解決了,但沒有,因爲我獲得了7場比賽。

任何人都可以告訴我我錯在哪裏? 謝謝

回答

3

正常化空間刪除空白,但爲了這個目的,沒有空格的字符(儘管它的視覺外觀)不被認爲是空格。所以我會這樣做

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

這將返回那些包含非空白或無間斷空格字符的子文本節點;您可能需要進一步處理以提取您想要的內容部分。

0

如果您使用XSLT,您可以使用

<xsl:template match="p[@class='pageSelector']/a/text()[normalize-space()]"> 
</xsl:template> 

申請進一步的模板到一個標籤,這將意味着你只剩下了4

+0

這只是錯誤的。 `ParentNode`?即使那樣``4  ```作爲直系祖先````。 – Flack 2011-02-15 09:33:02

+0

哎呀抱歉忘了刪除它正在玩! – Treemonkey 2011-02-15 09:37:39