2013-04-09 53 views
1

我在解析HTML時使用了JTidy和xpath,但暫時解析文本會導致我有點麻煩,因爲它可能包含內部的b標籤,所以我不想循環它子節點,但只需在加載html後刪除'b'標籤。使用JTidy從html中刪除所需的標籤

如何從DOM文檔中刪除標記。

Document doc = tidy.parseDOM(url.openStream(), System.out); 

爲它例如僞碼 - doc.removeTag('<b>');

這可能嗎?

+0

這裏的配置選項http://tidy.sourceforge.net/docs/quickref.html列表,使更換b與強大,但這些都是選擇。我們可以重寫其中的一些嗎? – 2013-04-09 08:26:00

回答

0

你已經用'jdom'標記了這個,但是你的文檔是一個DOM文檔(不是JDOM)。

對於corse,如果它 JDOM,您可以使用相對簡單的文檔掃描替換Elements的內容。或者,您可以使用自定義SAXHandler跳過首先添加元素。

使用JDOM,你可以,例如,做這樣的事情:

for (Iterator <Content> it = document.getDescendants(); it.hasNext();) { 
    Content c = it.next(); 
    if ((c instanceof Element) && "b".equals(((Element)c).getName())) { 
    Element e = (Element)c; 
    it.remove(); 
    for (Content k : e.getContent()) { 
     k.detach(); 
     it.add(k); 
    } 
    } 
}