2012-08-02 60 views
2

我有一個很大的XML文件,可以從互聯網上下載。爲了解析它,我試着使用DOM解析器,但它不讓我跳過某些標籤,因爲它給了我一個錯誤。有沒有解決的辦法?如果我理解正確的話,SAX解析器可以讓你跳過標籤,而DOM不會。有人可以善意澄清這個事實,就好像是這樣,我不明白DOM解析器的優點。提前致謝。DOM vs SAX Java

回答

11

DOM被設計爲獨立於語言的對象模型來存放任何XML數據,因此是一個龐大而複雜的系統。它非常適合首先加載XML文檔的兩階段方法,然後對其執行各種操作。另一方面,SAX被設計爲使用單相方法的相當輕量的系統。使用SAX,用戶指定的操作在文檔加載時執行。某些應用程序使用SAX來生成較小的對象模型,同時過濾掉不感興趣的信息,然後與DOM進行類似的處理。 請注意,雖然DOM和SAX是衆所周知的「標準」XML API,但還有其他許多可用的,有時某個特定應用程序使用非標準API可能會更好。對於XML來說,重要的一點是數據。代碼可以被重寫。

一些快速點:

  1. SAX比DOM快。
  2. SAX適合大型文檔,因爲 它比Dom需要的內存比較少。
  3. SAX花較少的時間 閱讀一個文件,其中Dom需要更多時間。
  4. 使用SAX我們可以獲得 訪問數據,但我們無法修改data.With Dom我們可以修改數據。
  5. 我們可以在任何時候,任何地點停止SAX解析。
  6. SAX是順序解析,但使用DOM我們也可以移動到後面。
  7. 解析機器生成的代碼SAX比較好。解析人類 可讀文檔DOM很有用。
+0

他們都可以跳過標籤,但?或者只有SAX可以?換句話說,DOM是否需要解析所有標籤? – progdoc 2012-08-02 08:58:30

+3

DOM不能跳過標籤,它將所有的信息作爲樹模型返回,然後從樹模型中選擇你想要的特定信息......所以要回答你的問題,沒有DOM不能跳過標籤,只有SAX可以。有不同的方法只返回樹的某個級別的信息(如樹的低級別),但仍需要通過所有的標籤才能完成此操作 – 2012-08-02 09:21:13