Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.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_Xsd_Xml Parsing - Fatal编程技术网

Java中修改XML的内存有效方法

Java中修改XML的内存有效方法,java,xml,parsing,xsd,xml-parsing,Java,Xml,Parsing,Xsd,Xml Parsing,我需要修改XML文件中的单个信息。XML文件大约有100行。对于修改整个XML文件中的单个元素,JAVA中最节省内存的方法是什么 JAXB更好 简单SAX解析器 或者任何其他方式……请建议……SAX解析器在解析方面提供了更多的控制,并且比DOM解析器更快。JAXB将很容易,因为代码编写更少。XStream也是另一个选项,但它与JAXB类似,JAXB是一个高级API,因此它有一些开销任务,因此比SAX慢一点。 我不建议直接进行字符串操作(应用string.indexOf()和string.repl

我需要修改XML文件中的单个信息。XML文件大约有100行。对于修改整个XML文件中的单个元素,JAVA中最节省内存的方法是什么

  • JAXB更好
  • 简单SAX解析器
    或者任何其他方式……请建议……

    SAX解析器在解析方面提供了更多的控制,并且比DOM解析器更快。JAXB将很容易,因为代码编写更少。XStream也是另一个选项,但它与JAXB类似,JAXB是一个高级API,因此它有一些开销任务,因此比SAX慢一点。 我不建议直接进行字符串操作(应用string.indexOf()和string.replace()),虽然这是更新XML中唯一标记的最快方法,但风险很大,因为您的XML可能无效,如果XML结构不简单,则有更新错误级别标记的风险:-)


    因此,SAX解析器在我看来是最好的选择。

    您的文件不大。用于保存100行XML文件的内存花费程序员大约5毫秒的时间。我会质疑你的要求:为什么你需要以“最节省内存的方式”这样做?我会使用XSLT或JDOM2,除非有明确的量化信息表明这不能满足外部强加的性能要求,而这不能通过购买更多的内存来解决。

    我必须更改XML文件中的单节点信息。但是在for循环中,这些XML文件的数量可能非常庞大,大约在5000到10000之间。编写SAX应用程序非常困难,它需要高水平的技能和大量的时间。尽管这个问题的答案是正确的,但我不愿意向任何人推荐SAX,除非我确信他们确实需要它,并且他们有使用它的技能。在这里,我们从尝试使用SAX的人那里得到了很多问题,他们甚至不知道如何实现一个简单的堆栈。谢谢Michael-很荣幸在这里看到您的回答。我一直是你的忠实粉丝!我同意。可能是因为我的单个文件的大小不是很大,但是当我更新循环中的每个XMl文件时,这些文件的数量是巨大的,或者可能是巨大的。此类文件的数量也可以增加到30000-60000。这就是为什么我关心表现。如果你对这个话题有更多的意见,我热切地等待你的宝贵建议。当然你应该关注表现。但不是记忆。每个文档一经处理就会被垃圾收集。我可以使用JAXB加载XML和更新XML吗。这会比普通SAX解析器更高效吗?JAXB可以非常高效。根据我的经验,当XML文件的结构简单、规则且稳定时,它工作得最好。如果不同文档之间存在很多差异,或者结构将随着时间的推移而改变,那么JAXB不是最佳选择。