【发布时间】:2017-10-25 15:25:46
【问题描述】:
我一天有数百万个 xml 文件。 xml 文件的大小从 10KB 到 50 MB。
我已经编写了 SAX 解析器来解析 xml 文件并写入文本文件。 我正在从数百万个 xml 文件中创建 35 个独特的文本文件。 我必须以先到先的基本方式解析这些 xml 文件,以便保持记录的顺序。
我必须非常快地处理文件。
xml 文件的总大小约为 1 TB。 我还没有实现多线程来处理 xml 文件,因为我必须以先到先的方式处理它。
如何快速处理所有的xml文件?
在将我的代码移动到 prod 之前,我只是想检查一下我是否需要重新考虑我的实现。
这就是我读取 xml 文件并处理它的方式。
public static void main(String[] args) {
File folder = new File("c://temp//SDIFILES");
File[] files = folder.listFiles();
Arrays.sort(files, new Comparator<Object>() {
public int compare(Object o1, Object o2) {
if (((File) o1).lastModified() > ((File) o2).lastModified()) {
return -1;
} else if (((File) o1).lastModified() < ((File) o2).lastModified()) {
return +1;
} else {
return 0;
}
}
});
for (File file : files) {
System.out.println("Started Processing file :" + Arrays.asList(file));
new MySaxParser(file);
}
}
我不确定我的处理是否适用于数百万个 xml 文件。
【问题讨论】:
-
考虑学习 XSLT?
-
您应该在Codereview 中提出这个问题。它们可以帮助您更好地改进代码。
-
@ThorbjørnRavnAndersen 现在我们无法更改实现...
-
@ThorbjørnRavnAndersen 我们可以使用大数据 mapreduce 来处理吗..会有帮助吗?