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

Java 如何从XML文件中读取数据并将其存储到数据库(MySQL)中?,java,sql,mysql,xml,Java,Sql,Mysql,Xml,我需要从XML文件中获取数据并将其存储到MySQL数据库中。我正在考虑使用SAX解析器来解析数据,但我不确定如何将数据有效地存储到数据库中,我正在考虑的技术很少,比如,但我想问一下,什么是有效的方法 注意:这里的编程语言是Java。我建议使用JAXB读取XML到Java对象,使用JPA将它们写入数据库。您可以使用Java类创建单个数据模型,这些Java类既有使用JAXB的XML绑定注释,也有使用JPA的数据库持久性注释 @Entity @Table(name="Foo") @XmlRootEle

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


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

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

@Entity
@Table(name="Foo")
@XmlRootElement
public class Foo {
    // ...
}
关于的信息。
有关的信息。

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

DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder parser = documentBuilderFactory.newDocumentBuilder();
Document doc = parser.parse(source);
您可能已经将元素或属性映射到DB上的列。然后,为了简单起见,您可以使用XPath查询元素/属性,并将它们写入数据库。如果这是一次性转换,我建议使用简单的JDBC。不要考虑JPA或Hibernate,因为它只会增加常规数据转换场景的开发时间。

您可以使用witch作为从 XML到Java编程语言对象和从Java到 数据库


我还发现了一系列描述如何使用适合您需要的Castor的文章。

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


这相当广泛-您需要详细说明您的实际数据以及您想对其执行的操作。我正在获取联机目录作为数据以及一些业务规则,我需要根据一些业务规则和其他注意事项修改传入的数据,并创建规范的数据模型,然后存储相关数据进入MySQL数据库。这里的问题是要完成以下任务,什么是更好的工具,任务:“需要解析一个XML文件,它包含数据和决策规则,并将数据存储到数据库中(MySQL现在可以,但将来可以更改),并与处理XML文件中决策规则的ILOG JRules的java代码交谈”,现在讨论的是哪个工具更适合完成任务,PERL还是Java,考虑的是与开发速度相比执行速度。我对JAXB和JPA都不熟悉,您建议我去哪里获取对我的任务有用的相关信息。EclipseLink是一个很好的地方,因为它提供了JAXB和JPA(这是RI)实现。关于如何使用这些技术的示例可以在这里找到-@Cetnar:非常感谢您提供的信息。我会详细介绍一下。@Cetnar:对于大数据集(>1GB),它可以很好地扩展吗@Rachel:您有大数据集(>1GB)吗xml文件?如果性能有问题,您可以尝试其他JAX库,如或使用StAX解析器解析xmlsuppouse@Cetnar:我的xml文件大于1GB,是的,如果我使用castor,性能也是主要问题,因为我无法映射java对象如果我打算使用jibx或StAX,那么将java对象映射到MySQL的最佳方法是什么?Hibernate/JPA/JDBC,或者哪种技术对我来说是有效的?如果你只打算移动(并动态修改)在我看来,xml do数据库中的数据从性能角度来看,普通的JDBC将是最有效的。我必须根据决策规则对xml进行某种操作,因此这种方法对我来说有用吗?@Mohsen:这不是一次转换,意味着它存储在MySQL中,而不是将来可能需要根据需要进行更改在业务/决策规则发生变化时,尽管如此,根据我的要求,JDBC仍然是选择或使用Hibernate或JPA或其他一些ORM技术(如TopLink)的正确选择,Ibatis是否有用?