2012-03-21 58 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(商业)。