在Java中为海量XML文件的开头添加属性的最有效方法是什么?

在Java中为海量XML文件的开头添加属性的最有效方法是什么?,java,xml,file-io,Java,Xml,File Io,向大型XML文件的根元素添加属性的最快方法是什么?这些文件太大,无法读入内存,我希望尽可能避免I/O损失。如果在开始处或接近开始处插入文本,您不需要重写整个文件吗?如果不希望一次将输入全部存储在内存中,SAX解析器应该能够适应缓冲区输入(通过InputStream) 您仍然需要重写整个文件,但不需要立即将其存储在内存中。基本上,您将解析文件,监听SAX事件并从这些事件中写出新文件。然后,SAX解析器还将侦听添加属性的正确情况。如果在开始处或接近开始处插入文本,您不需要重写整个文件吗?如果不希望一

向大型XML文件的根元素添加属性的最快方法是什么?这些文件太大,无法读入内存,我希望尽可能避免I/O损失。

如果在开始处或接近开始处插入文本,您不需要重写整个文件吗?如果不希望一次将输入全部存储在内存中,SAX解析器应该能够适应缓冲区输入(通过InputStream)


您仍然需要重写整个文件,但不需要立即将其存储在内存中。基本上,您将解析文件,监听SAX事件并从这些事件中写出新文件。然后,SAX解析器还将侦听添加属性的正确情况。

如果在开始处或接近开始处插入文本,您不需要重写整个文件吗?如果不希望一次将输入全部存储在内存中,SAX解析器应该能够适应缓冲区输入(通过InputStream)


您仍然需要重写整个文件,但不需要立即将其存储在内存中。基本上,您将解析文件,监听SAX事件并从这些事件中写出新文件。然后,您的SAX解析器还将侦听添加属性的正确情况。

不用Java重写文件几乎是不可能的(我甚至认为,如果您在系统级调整文件,您甚至无法做到这一点,但可能……),因此您的问题变成了重写文件的最有效方式是什么


如果可能的话,我会避开所有的XML解析器,编写自己的解析器。这将要求您可以轻松地确定此新属性需要在文件中的位置。如果你能找到与之匹配的字符串,你可以一次读入一点,扫描插入点,然后在到达插入点时插入额外的数据,然后继续复制其余的数据。

不用Java重写文件几乎是不可能的(我甚至不认为在系统级调整文件时可以这样做,但也许…)——所以你的问题变成了重写文件最有效的方法是什么


如果可能的话,我会避免使用所有的XML解析器,并编写自己的。这需要您能够轻松地确定这个新属性需要放在文件中的什么位置。如果您能够找到匹配它的字符串,您可以一次读入一点,扫描插入点,然后在到达插入点时插入额外的数据,然后继续复制e rest over.

这是一个新定义的att还是一个定义为可选但未填充的att?新定义的属性-特别是名称空间属性,以便JAXB可以解组对象。小心将名称空间声明视为属性。解析器对其进行特殊处理,并且可能不会将该信息作为属性公开给APIutes.这是一个新定义的att还是一个定义为可选但未填充的att?新定义的属性-特别是名称空间属性,以便JAXB可以解组对象。小心将名称空间声明视为属性。解析器对其进行特殊处理,并且可能不会将该信息作为属性公开给API。