2011-10-11 36 views
0

我使用NekoHTML框架和xerces 2.11.0版本來解析HTML文檔。 但我有這個簡單的代碼有問題:使用NekoHTML解析html文檔

DOMParser parser = new DOMParser(); 
System.out.println(parser.getClass().toString()); 
InputSource url = new InputSource("http://www.cbgarden.org"); 
try{ 
    parser.parse(url); 
    Document document = parser.getDocument(); 
    System.out.println(document.hasChildNodes()); 
    System.out.println(document.getBaseURI()); 
    System.out.println(document.getNodeName()); 
    System.out.println(document.getNodeValue()); 
}catch(Exception e){ 
    e.printStackTrace(); 
} 

現在我把這裏的多次打印的結果:

  1. 類org.cyberneko.html.parsers.DOMParser
  2. HTTP : //www.cbgarden.org
  3. 文件

所以我的問題是:什麼可能是錯的? 不會引發異常,我遵循在NekoHTML中的使用規則中定義的規則。我的構建路徑庫與此優先級:

  1. nekohtml.jar
  2. nekohtmlSamples.jar
  3. xercesImpl.jar
  4. xercesSamples.jar
  5. 的xml-apis.jar
+0

我只是有一個關於這個問題的問題: 爲什麼parser.getDocument()方法返回一個文檔有兩個節點,其中一個是NULL? – tt0686

回答

1

我想你的問題是關於null
文檔節點沒有價值。它只有子節點(如<html>女巫包含<head><body>)。

但是,如果您希望將整個頁面源代碼設置爲字符串,則只需使用URL其方法openStream()即可下載。

+0

是的,我看到這個知道。如果我make document.getChildNodes(),結果將是兩個節點,其中一個返回「HTML」,如果我使用getLocalName()和其他returs NULL.How我看到所有文檔,如果我使用document.toString它返回[document:null] – tt0686

+0

好吧,我已經找到一個解決方案;)感謝您的幫助。 – tt0686