Java 如何更新大型XML文件

Java 如何更新大型XML文件,java,xml,Java,Xml,更新单个元素时,是否有更好的替代方法来更新文件,而不是重写xml文件的全部内容?我建议使用VTD-xml 从他们的常见问题()中: 为什么要对大型XML文件使用VTD-XML 原因如下: 性能:VTD-XML的性能远远优于SAX 易用性:随机访问与XPath相结合使应用程序易于编写 更好的可维护性:应用程序代码更短,更容易理解 增量更新:偶尔的小改动会变得非常有效 索引:预解析的XML格式将进一步提高处理性能 其他功能:剪切、粘贴、拆分和组装XML文档仅适用于VTD-XML 为了利用VTD-

更新单个元素时,是否有更好的替代方法来更新文件,而不是重写xml文件的全部内容?

我建议使用VTD-xml

从他们的常见问题()中:

为什么要对大型XML文件使用VTD-XML

原因如下:

  • 性能:VTD-XML的性能远远优于SAX
  • 易用性:随机访问与XPath相结合使应用程序易于编写
  • 更好的可维护性:应用程序代码更短,更容易理解
  • 增量更新:偶尔的小改动会变得非常有效
  • 索引:预解析的XML格式将进一步提高处理性能
  • 其他功能:剪切、粘贴、拆分和组装XML文档仅适用于VTD-XML

为了利用VTD-XML,我们建议开发人员将其超大XML文档拆分为更小、更易于管理的卡盘(这里有几个选项,但没有一个是好的


由于XML对象没有划分为不同的部分,因此您必须使用一些文件系统级别的修改和正则表达式模式匹配(sed是一个良好的开端),或者您应该将XML划分为更小的部分以便于管理。

如果可能,序列化XML并使用diff/patch/apply Linux工具(或平台中的等效工具)这样,你就不必处理解析、写了。

如果XML文件太大,更新它是性能瓶颈,你应该考虑从XML移到更高效的磁盘格式(或真实的数据库)。 但是,如果您觉得这可能是个问题,请记住优化规则:

  • 不要这样做
  • (仅限专家)暂时不要这样做

  • 使用XQuery处理大型XML文件可处理千兆字节大小的XML文件

    XQuery是一种被设计为原生XML查询语言的查询语言。因为大多数类型的数据都可以表示为XML,所以XQuery还可以用于查询其他类型的数据。例如,XQuery可以用于使用关系数据库的XML视图查询关系数据。这一点很重要,因为许多Internet应用程序需要集成来自多个源的信息,包括web消息、关系数据和各种XML源中的数据。XQuery是专门为这种数据集成而设计的

    例如,假设您的公司是一家金融机构,需要为每个客户生成股票持有量报告。客户使用简单对象访问协议(SOAP)请求报告消息,以XML表示。在大多数企业中,股票持有数据存储在多个关系数据库中,如Oracle、Microsoft SQL Server或DB2。XQuery可以查询SOAP消息和关系数据库,从而以XML创建报告


    XQuery基于XML的结构,利用该结构可以对任何可以表示为XML的数据类型(包括关系数据)执行查询允许您的查询在支持J2EE平台的任何环境中运行。

    文件有多大?是否可以放入内存?