2011-12-08 32 views
0

好什麼,我試圖做的是分析這樣的事情<p>你好<b>世界</B > <ü>下劃線</U> </P>線性

我通過網絡搜索,它總是給我一個DOM解析器,這不是我所需要的。解析HTML Java中線性

我需要的輸出這將是一個樹這樣的:

      p 
         /\ \ 
         Hello b u 
           | \ 
          World underlined 

基本上,我需要一個在Java解析HTML並試圖解釋它(顯示在HTML標籤一個GUI)。

謝謝。

+0

定義「線性」。解釋你爲什麼認爲這應該是可能的。對於這個問題,解釋你認爲「解析」的含義。你期待什麼樣的輸出?獲取DOM對象有什麼不足或不適用? –

回答

0

你需要解釋Linearly是什麼意思。如果你想解析並獲取每個標籤,那麼DOM解析器就是其中一個選項。但對於大型HTML文件,DOM解析器速度很慢。或者,您可以使用SAX解析器並創建您自己的解析器。 Dom解析器在內部使用SAX解析器

0

使用SAX解析器可能是您想要的,因爲它從頭到尾讀取輸入文檔,併爲您找到的每個節點調用您的代碼。

SAX是一個XML解析器,大多數HTML並不是完美的XML。所以要使用SAX,你需要一個可以處理不完全輸入的工具。我建議TagSoup,這是免費的和Apache許可的。

然後你寫一個類實現org.xml.sax.ContentHandler。當解析器讀取輸入時,該類將接收來自SAX解析器的回調。它應該調用你的代碼中的方法是這樣的:

startElement("p") 
characters("Hello") 
startElement("b") 
characters("World") 
endElement("b") 
startElement("u") 
characters("Underlined") 
endElement("u") 
endElement("p") 

(上ContentHandler中的實際方法有幾個參數,我離開了例如爲簡單起見)

+0

謝謝,會試試看。 – user1087096