2012-03-21 83 views
0

我需要使用xml文件插入,刪除和更新數據。我聽說過一些像xpath,XStream或JDOM這樣的方法。除了這個方法的名字,我不知道任何東西,就像數據庫一樣使用xml。哪一個更容易學習?你爲什麼建議初學者使用XML文件作爲Java數據庫?

+0

[Java的最佳XML解析器]的可能的重複(http://stackoverflow.com/questions/373833/best-xml-parser-for-java) – assylias 2012-03-21 23:15:42

+0

你是什麼意思「使用xml文件」。數據應該插入到xml文件中,還是要插入的數據來自xml文件? – meriton 2012-03-21 23:16:22

+0

數據應該插入到xml文件中。 – 2012-03-21 23:18:49

回答

3

數據庫和XML是相當不同的野獸。 XML是一種連續的,以文檔爲中心的文件格式,即無需將整個文件寫回磁盤即可更新XML文件。另一方面,數據庫允許在不觸及任何其他記錄的情況下有效地插入,更新和刪除單個記錄。

使用XML文件實現「數據庫」時無法實現該屬性,因此,如果您的數據量不平均,並且一次只更新一些記錄,則此方法效率非常低。

也就是說,將數據映射到XML的相對簡單的方法是JAXB。起點可能是 Chapter 17 of the Java EE 5 Tutorial。您可能不需要架構,只需使用JAXB批註註釋要寫入/讀取XML的類即可。

0

我不確定XML會構成一個好的「數據庫」。 XML是分層的;關係數據庫是基於集合的。

XML XPath與SQL DQL不同。

你想重複抽象掉數據源的LINQ思想嗎?

0

這很大程度上取決於您想如何處理更新的持久性。如果數據足夠小以至於您可以考慮將整個數據從內存寫回磁盤,那麼您可以使用類似DOM的方法(即將整個XML存儲在內存中),也許可以使用支持XQuery的Saxon等處理器, XQuery針對內存中的XML進行更新。但是,這僅僅是「像數據庫」一樣有限:它不會爲您提供事務,鎖定,恢復,原子性或人們與數據庫關聯的任何管理功能,更不用說處理大數據量的可伸縮性了。如果你想要一個真正的數據庫,選擇一個XML數據庫,如eXist(開源)或MarkLogic(商業)。