如何从XML文件中读取数据并将其存储到数据库(MySQL)中?

我需要从XML文件中获取数据并将其存储到MySQL数据库中。 我正在考虑使用SAX Parser来解析数据,但我不确定如何有效地将数据存储到数据库中,我想到的是像JDBC和Hibernate这样的技术,但是我想问一下有效的方法是什么它?

注意:这里的编程语言是Java。

您可以使用Castor witch是一个开源数据绑定框架,用于将数据从XML移动到Java编程语言对象以及从Java移动到数据库。

我在IBM developerWorks中找到了一篇文章系列,描述了使用适合您需求的Castor。

我建议使用JAXB读取XML到Java对象,使用JPA将它们写入数据库。 您可以使用Java类创建单个数据模型,这些Java类既包含使用JAXB的XML绑定注释,也包含使用JPA的数据库持久性注释。

@Entity @Table(name="Foo") @XmlRootElement public class Foo { // ... } 

有关JAXB注释的信息。 有关JPA的信息。

这取决于很多因素。 如果您的XML太大(> 1GB或与您的总内存相当),那么您应该使用SAX,我认为不会有其他解决方案。 如果它很小(例如小于100MB),只需使用JAXP将整个XML加载到Document对象中:

 DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder parser = documentBuilderFactory.newDocumentBuilder(); Document doc = parser.parse(source); 

您可能在DB上的列上映射了元素或属性。 然后,您可以使用XPath查询元素/ attrs以简化并将它们写入DB。 这是一次性转换,我建议使用简单的JDBC。 不要考虑JPA或Hibernate,因为它只会增加日常数据转换方案的开发时间。

您可以使用blob直接将XML存储到mySQL中…如果您想要有效的索引和高性能,VTD-XML具有索引/查询/更新XML文档的内置function,使其成为比SAX和DOM更好的替代方案,这里是指向相关文章的链接

使用VTD-XML索引XML文档