【发布时间】:2014-06-14 05:08:25
【问题描述】:
我需要从大约 100 个最长 200,000 行的 XML 文件中读取前 15 行。有没有办法使用BufferedReader 之类的东西来有效地做到这一点? this question 中概述的步骤使用 DocumentBuilder.parse(String);这会尝试一次解析整个文件。
编辑:前 15 个元素包含关于文件的元数据(页面名称、上次编辑日期等),我想将其解析为表格。
【问题讨论】:
-
DocumentBuilder (DOM) 尝试解析所有内容。如果你想阅读lines,你应该使用
BufferedReader。如果您想读取 tags 那么您应该使用 SAX (org.xml.sax) 阅读器(或 XML 阅读器),这将允许您按顺序阅读 XML 并响应由找到的标签引起的事件. -
一旦你有了 XML,试着把它读成 XML。我不确定这是否可能,但我建议修改 SAX 解析器 (mkyong.com/java/how-to-read-xml-file-in-java-sax-parser) 以在您读取前 15 个元素时结束,但请注意,即使是长 XML 也可以只在一行中......
-
你可以统计
startElement方法中读取的元素数量,当你读取到一定数量(元素数量,而不是行)时停止。 -
我希望利用解析器带来的 xml 友好方法。如果我只使用 BufferedReader,我不需要手动分离我的元素吗?
-
您可以使用 SAX 解析器并在
characters()方法中计算换行符。但是如果你真的想从文件的开头提取一些东西,你可以在找到它时停止。
标签: java xml parsing file-io gosu