我需要从一个1 GB的XML文件中提取一些数据到使用ets和dets的表中。我搜索了整个网络,也在这里,但我没有找到任何关于如何处理大型XML文件的简单示例。一开始,我只想了解如何在不将整个文件上传到内存的情况下读取文件。
Thnx。
发布于 2012-07-29 22:31:18
你检查过xmerl library了吗
发布于 2012-07-30 15:27:47
对于读取大文件并且不将其完全加载到内存中,您可以使用file:open/2,执行以下操作:
{ok, FileHandler} = file:open(File, [read, raw, read_ahead]),
{ok, Line} = file:read_line(FileHandler)此外,为了使用XML,在Erlang中使用了xmerl,不幸的是,它的文档非常少。
发布于 2012-07-29 22:21:06
我不知道Erlang,但似乎集成C库是可能的。如果您愿意这样做,我建议您看看expat库。我知道它是quickes、轻量级xml解析器库。一个简单的回调机制调用每个xml元素的代码,您可以自己决定是将其保留在内存中还是跳过它。
我知道,这是非常低级的。但不幸的是,对于非常大的数据,这通常是唯一的方法。
这是我在谷歌上找到的东西:http://dudefrommangalore.blogspot.de/2009/04/erlang-xml-parser-comparison.html
https://stackoverflow.com/questions/11709793
复制相似问题