2014-08-31 55 views
1

如何用「」替換我從HTML文件中解析的&nbsp字符? 有關於該像許多問題,並「接受」的答案,java - 將字符串處理爲

How to remove   with Jsoup?

How to remove " " from java string

Handling special entities like & nbsp; , & pound; in HtmlCleaner

但我仍然無法通過使用這些給出的所有解決方案,通過此獲得鏈接,

if(tr.text().replace("\u00a0", "").isEmpty()){ 
    System.out.println("testing---"); 
} 

我在做什麼錯在這裏? 在這種情況下可以使用jsoup嗎?我在其中一個答案中讀到了這一點。

UPDATE 這是我試圖從中獲取數據的HTML部分。

<TR> 
    <TD class=xl27boBL noWrap>&nbsp;</TD> 
    <TD class=xl27boBL noWrap>&nbsp;</TD> 
    <TD class=xl27boBL noWrap>&nbsp;</TD> 
    <TD class=xl27boBL noWrap>&nbsp;</TD> 
    <TD class=xl27boBL noWrap>&nbsp;</TD> 
    <TD class=xl27boBL noWrap>&nbsp;</TD> 
    <TD class=xl27boBL noWrap>&nbsp;</TD> 
    <TD class=xl27boBL noWrap>&nbsp;</TD> 
    <TD class=xl27boBL noWrap>&nbsp;</TD> 
    <TD class=xl27boBL noWrap>&nbsp;</TD> 
    <TD class=xl27boBL noWrap>&nbsp;</TD> 
    <TD class=xl27boBL noWrap>&nbsp;</TD> 
    <TD class=xl27boBL noWrap>&nbsp;</TD> 
    <TD class=xl27boL noWrap align=right>&nbsp;</TD> 
</TR> 
+0

我已更新問題 – 2014-08-31 09:46:11

+0

你是說noWrop thingy導致問題? – 2014-08-31 09:59:29

+0

不,實際上,JSoup真的可以容忍無效的HTML - 這是它的偉大之處之一。 – 2014-08-31 10:01:02

回答

2

answer given here正常工作。您得到falseisEmpty的原因是tr元素的文本不包含只有&nbsp;個字符  —還有其他空白字符。你要添加trim電話:

if(tr.text().replace("\u00a0", "").trim().isEmpty()){ 
// Here --------------------------^^^^^^^ 
    System.out.println("testing---"); 
} 

我想通了這一點只需通過查看tr.text(),當我跑你的例子HTML到JSoup返回的文本;基本調試。

+0

嗨,先生,它仍然沒有爲我工作,我有兩個TR標籤,在第一個TR標籤中有一個在最後一個TD中,在下一個TR標籤中,我有所有的TD與&nbsp。通過添加trim()(我在發佈問題之前已經嘗試過),只有第一個TR的最後一個TD使用&nbsp進行檢測,而不是下一個TR,它的TD中有所有&nbsp。希望我很清楚 – 2014-08-31 10:07:49

+0

是jsoup真的需要這個嗎?不會有正則表達式嗎? – 2014-08-31 10:08:01

+0

嗨soni,這不是jsoup,它的簡單文本操作 – 2014-08-31 10:08:31

0

從Jsoup得到文件後,使用StringEscapeUtils

StringEscapeUtils.unescapeHtml4(test)); 

使用這個庫ORG-Apache的公地lang.jar。