Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中解析大量xml文件_Java_Xml_Parsing - Fatal编程技术网

在java中解析大量xml文件

在java中解析大量xml文件,java,xml,parsing,Java,Xml,Parsing,我将从MQ获取大量xml文件(每几分钟数万个)。xml文件不是很大。我必须提取信息并保存到数据库中。不幸的是,我不能使用第三方库(ApacheCommons除外)。此场景中通常使用哪些策略/技术?java或apache中是否有任何xml解析器可以很好地处理此类情况 我还可以补充一点,基于对这个主题的评论和讨论,我正在使用JDK1.4,我想提出一个整合的解决方案 使用SAX解析XML文件-如@markspace所述,您应该 内置SAX,性能良好 如果可能,使用批量插入-因为您计划插入一个大的 数据

我将从MQ获取大量xml文件(每几分钟数万个)。xml文件不是很大。我必须提取信息并保存到数据库中。不幸的是,我不能使用第三方库(ApacheCommons除外)。此场景中通常使用哪些策略/技术?java或apache中是否有任何xml解析器可以很好地处理此类情况


我还可以补充一点,基于对这个主题的评论和讨论,我正在使用JDK1.4,我想提出一个整合的解决方案

  • 使用SAX解析XML文件-如@markspace所述,您应该 内置SAX,性能良好

  • 如果可能,使用批量插入-因为您计划插入一个大的 数据量考虑读取的数据<>强>类型>强> 存储到数据库中。所有XML文件是否都包含相同的内容 模式(这意味着它们对应于 或者它们代表不同的对象(这意味着 最终会将数据插入多个表)

    如果需要插入到中的所有XML文件的架构 数据库中的同一表,然后考虑批处理这些数据。 对象并将其批量插入数据库。这将是 从时间和资源的角度来看,肯定会有更好的表现 (您只需打开一个连接即可将批作为 与每个对象的多个连接相反)。当然是你 需要花费一些时间来调整批处理大小,并且 决定批量插入的错误处理策略(discard) 所有v/s放弃错误

    如果XML文件的模式不同,则考虑结点 将类似的XML放入组中,以便可以批量插入这些组 稍后

  • 最后,这一点很重要:确保发布所有 资源,如文件句柄、数据库连接等 在处理过程中或遇到错误时完成。简而言之 单词在正确的位置使用
    try catch finally


  • <> p>虽然没有完成,但希望这个答案为您提供了一组关键的检查点,在编写可扩展性能代码

    时,您需要考虑的是,STAX是内置的并且工作正常。应该是原子操作吗?我的意思是,如果某个xml中有错误,该怎么办?哇,太快了:)谢谢,我来看看。但是,如何处理这些数据库插入?@Sach:如果有错误,我只需记录它并继续下一个xmlUse-a-database
    INSERT
    。然而,当您说“MQ”时,您可能处于一个已经定义了数据库源或API的环境(JEE)中。询问需求。谢谢普拉哈拉德。另一个问题是我们如何决定这些批量插入的频率?@lemonTea这个问题没有明确的答案。您必须根据各种因素(如内存消耗、数据必须持久化到数据库的时间限制等)来决定批量插入的频率。确定正确参数的唯一方法是在模拟生产的环境中观察一系列值的应用程序性能