2015-06-07 58 views
1

我在java中實現了VTD解析器,它能夠輕鬆成功地解析大約500 MB的XML文件,並且能夠在Excel中編寫。 我知道DOM解析器首先創建了一個樹節點結構,然後獲取數據,而SAX是一個基於事件的解析器。但是,VTD解析文件如此簡單而高效呢? 我試圖搜索,我得到了許多實現的例子,但從來沒有得到的邏輯。我試圖通過下面的鏈接得到的想法,但沒有得到清晰的圖片。 VTD_Parserjava VTD-Parser Logic

如果任何人可以解釋這個簡單的想法。

回答

1

根據關於該主題的Wikipedia page,VTD-XML(用於XML的虛擬令牌描述符)利用了非交互式解析,這意味着它不會將數據從文檔中提取出來,存儲到某些基於內存的數據結構中,而是生成數據結構包含指向原始文檔的指針(以偏移和長度的形式)。這種處理顯然是最有效的內存處理方式,但我相信這是以犧牲性能爲代價的,因爲不可避免的IO操作是在請求數據時完成的(但緩存在這裏可以提供很多幫助)。

這在我看來,那朵處理是當輸入非常大,所請求的數據是非常小的最有用的(一種數據挖掘情景)

+0

解釋很多..謝謝。 –

+0

@Bhavik這是不準確的,Vtd-xml比DOM更適合沉重的導航,並且幾乎不涉及IO成本......事實上,將數據提取到數據結構中僅僅是浪費處理能力和內存。 。我很樂意澄清更多... –

+0

@ vtd-xml-author - 那麼如何簡單有效地解析文件呢? –