Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.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/9/delphi/9.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列并保存到XML文件和CSV文件?_Java_Xml_Csv_Dom_Xml Parsing - Fatal编程技术网

Java 如何高效地从数据库中读取XML列并保存到XML文件和CSV文件?

Java 如何高效地从数据库中读取XML列并保存到XML文件和CSV文件?,java,xml,csv,dom,xml-parsing,Java,Xml,Csv,Dom,Xml Parsing,我已经实现了一些逻辑,允许我查询包含XML列的一组记录。对于每个记录,我将把XML列数据保存为单独的XML文件,并生成相同数据的CSV文件。问题是,如果处理的记录太多,我只能对数量有限的记录执行此操作,因为我开始耗尽内存 目前的做法是: 为了写入CSV,我从查询中获取使用SQLXML对象返回的每个XML列的InputStream,并使用DOM解析器和一些XPath解析InputStream,以便仅识别包含任何类型文本子节点的元素,我并不真正关心父节点。然后在csv文件中使用元素名称作为标题,文本

我已经实现了一些逻辑,允许我查询包含XML列的一组记录。对于每个记录,我将把XML列数据保存为单独的XML文件,并生成相同数据的CSV文件。问题是,如果处理的记录太多,我只能对数量有限的记录执行此操作,因为我开始耗尽内存

目前的做法是:

为了写入CSV,我从查询中获取使用SQLXML对象返回的每个XML列的InputStream,并使用DOM解析器和一些XPath解析InputStream,以便仅识别包含任何类型文本子节点的元素,我并不真正关心父节点。然后在csv文件中使用元素名称作为标题,文本作为值。然后使用BufferedWriter和StringBuilder将数据写入文件,以保存文本,一个用于标题,一个用于值

将数据保存到XML文件是通过获取上述相同的InputStream并将其转换为字符串,最后使用BufferedWriter将其写入文件来完成的。从结尾看,这并不是最好的方法,因为在将整个XML数据写入文件时,它们都放在一行中,但目前它还可以工作

在Java中使用XML时,我是一个新手,所以我只是想获得关于可能的替代方案或更有效的实践的建议或输入,以完成同样的过程。希望能够一次处理至少70条记录


提前感谢。

我建议您使用SAX解析器而不是DOM解析器,因为SAX解析器可以读取任何大小的XML文档,而DOM解析器受内存量的限制。谢谢您的建议。我不认为我可以将XPath与SAX结合使用,但值得一看。再次感谢在这种情况下,您只能使用支持流式解析器的工具,或者您需要更多的内存。