读取XML与读取CSV文件java

时间:2010-12-05 15:00:29

标签: java

性能越快越好?

使用DocumentBuilder读取XML或使用Java中的FileReader / BufferReader读取CSV?

5 个答案:

答案 0 :(得分:1)

我不了解性能,但有一个因素是易于找到标准的,常用的解析器。现在JDK中内置了一个XML解析器,但我不知道CSV解析器。我认为XML比CSV更普遍。

另一个因素是数据的性质:XML表示层次结构,而CSV表示表格。我认为读取数据的“最佳”方式更多地取决于这样的事情。

答案 1 :(得分:1)

虽然我不能说更快的构建和易于维护,也没有性能;虽然我猜它真的取决于你如何使用正在解析的文件;例如读取文档节点会比csv更快,在CSV中加载文档可能会更快。总而言之,CSV是邪恶的,这意味着它是非常不稳定的数据存储。 XML有更多的开销,但方式更稳定。

RELATED_QUESTION: When and Why is XML preferable to CSV?

答案 2 :(得分:1)

使用FileReader类读取CSV文件的速度更快,因为读者只读取文件并且解析值是一个非常简单的步骤。

另一方面,使用DOMReaderSAXParser读取XML文件(您不使用构建器类读取文档,据我所知,它用于创建XML文档)因为处理XML数据是一个复杂得多的步骤,因此速度较慢。 XML文件往往非常冗长。

XML文件的优点是您可以对数据验证施加更多压力(当使用XSD进行XML结构定义时),即在读取文件时测试值的正确性。还可以编辑XML文件而无需进一步解释,因为XML元素名称(和可能的注释)在CSV文件中说的不仅仅是分号。

答案 3 :(得分:1)

我同意错误和duffymo。我只想添加以下内容。

由于两者都是数据格式,所以请考虑一下您的数据。这有多大,有多复杂?如果它是分层的,请忘记CSV。如果不是很大也一样。

考虑XML记住DOM不是解析它的唯一方法。 SAX更快。您可以使用Digester(构建在SAX之上),它允许您使用XML定义数据模型和XML模式之间的映射,然后运行得非常快。

如果数据非常大且解析器必须非常快,请检查JSON。它应该比XML更快,因为它不那么冗长。

答案 4 :(得分:1)

我一直想知道同样的事情。我刚刚使用Excel进行粗略测试,以读取和解析一个包含8,000条记录的简单文件。 XML加载花了大约8秒钟。 CSV加载时间不到1秒。

我认为CSV对于简单的表格数据来说是一个非常有效的选择,并且可以减少更多的重叠。对于更复杂的场景,XML是伟大的......