首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将XML拆分为独立的块。

将XML拆分为独立的块。
EN

Stack Overflow用户
提问于 2022-02-17 13:14:07
回答 1查看 130关注 0票数 -1

我正在使用快速XML解析一个巨大的xml文件(>100 GB),这个文件来自BufReader

我想把解析工作发展成多个线程。是否有一个快速XML拆分器可以将BufReader输入分割成独立的XML块,然后我可以使用快速xml分别进行解析?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-17 15:28:58

我不知道这种板条箱是否存在,如果有,它是否符合你的需要,但如果你决定自己去做,而且你知道你的文件的结构,我猜你很可能有很多这样的实体:

代码语言:javascript
复制
<root>
    <entity>
        ...
    </entity>
    <entity>
        ...
    </entity>
    <entity>
        ...
    </entity>
    ...
<root>

因此,如果每个entity都足够大/足够复杂,您应该从拆分字符串中获益,以便每个字符串部分对应于一个"<entity> ... </entity>"字符串(片)。您可以在一次迭代中动态地进行这种拆分。您可以使用一个工作线程池来并行地解析每个字符串部分,最后将它们合并到所需的数据结构中,比如Vec<Entity>

当然,如果您正在处理如此庞大的XML文件,您还应该考虑可以在RAM中放什么。

建议的方法可以提供一些性能提升,而且相对简单。当然,可以进一步优化它,但是如果不知道任务的具体情况,很难找到最优的解决方案。

而且,确保所有这些都是值得的。测量从IO读取文件所需的时间,因为这通常会成为瓶颈。确保使用大文件进行测试,否则系统的IO缓存可能会误导您IO读取速度高于实际速度。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71158830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档