首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于Flyweight设计的XML DOM解析

基于Flyweight设计的XML DOM解析
EN

Stack Overflow用户
提问于 2013-07-11 20:43:45
回答 3查看 410关注 0票数 3

对于包含大量重复节点、属性或值的文档,使用DOM在java中处理XML文档可能会占用过多的内存。

有没有人知道Java XML DOM API可以在内部利用flyweight-pattern将内存占用保持在最小?甚至是可配置/启用/禁用?

EN

回答 3

Stack Overflow用户

发布于 2013-07-11 21:05:20

你真的指的是轻量级模式吗?或者是否考虑过延迟加载(或者可能是“延迟解析”)?使用flyweight模式需要解析器识别具有相同内容(和结构)的元素。这将是耗时的操作(我担心这也会耗费空间)。此外,解析器应该在哪个深度开始识别flyweight?

事实上,我无法想象有任何DOM解析器能够识别flyweight。而且也不会有使用延迟加载的DOM解析器。这就是DOM的本质:解析整个XML文件,并为高度灵活和随机的导航生成数据结构。

也许您确实可以通过使用SAXStAX切换到流进程。当然,您将失去灵活和随机导航的能力,因为您现在必须“即时”处理您的元素。

但是,有一个名为VTD-XML的解析器。这是在考虑内存效率的情况下开发的。它还将整个XML文件加载到内存中,并提供一些在元素之间导航的方法。但请注意:这种导航有点复杂,而且不是很直观(由于内存高效存储的本质)。但也许这是你可以使用的东西。

票数 1
EN

Stack Overflow用户

发布于 2013-07-11 21:00:11

我不知道这样的DOM解析器(并不意味着它不存在)。但是,也许StAX解析器会更接近您要搜索的内容。

票数 0
EN

Stack Overflow用户

发布于 2013-07-11 20:48:22

它不是DOM,但SAX(javax.xml.parsers.SAXParser)应该会有帮助。

Parsing an XML File Using SAX

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

https://stackoverflow.com/questions/17593721

复制
相关文章

相似问题

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