2010-12-05 355 views
1

性能更快,更好?阅读XML与阅读CSV文件java

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

+5

这是一个非常广泛的问题 - 答案取决于许多因素,例如文档的大小和您尝试执行的处理类型。你能否提供更多关于你想解决什么问题的细节? – 2010-12-05 15:03:44

回答

1

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

因为它已经说过,两者都是数据格式,所以想想你的数据。它有多大和多复杂?如果它是分层的,忘记CSV。如果它不是很大,那么也一样。

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

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

1

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

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

1

虽然我不能说更快的构建和易于维护,也不能表现;尽管我猜这取决于你如何使用被解析的文档;例如读取文档节点的速度会比csv快,因此在CSV中加载文档可能会更快。所有这一切说,CSV是邪恶的,这意味着它是非常不稳定的数据存储。 XML有更多的开销,但方式更稳定。

RELATED_QUESTION:When and Why is XML preferable to CSV?

1

读一个CSV文件与FileReader类是更快请读者仅读取文件和值的分析这里是一个非常简单的步骤。

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

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

1

我一直在想。我只是做了一个粗略的测试,使用Excel来读取和解析一个简单的文件,其中有8,000条记录。 XML负载耗时约8秒。 CSV加载时间不到1秒。

我认为CSV对于简单的表格数据来说是一个非常有效的选择,并且携带了很少的整体感染。对于更复杂的场景,XML非常棒......