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

时间:2009-10-09 16:00:36

标签: java sql mysql xml

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

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

4 个答案:

答案 0 :(得分:4)

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

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

关于JAXB annotations的信息。 关于JPA的信息。

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

这取决于很多因素。如果您的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,因为它只会增加日常数据转换方案的开发时间。

答案 3 :(得分:0)

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

Index XML documents with VTD-XML