DOM中的文件加载如何工作?

时间:2011-08-16 10:55:36

标签: java xml dom memory

我一直在寻找用Java加载XML文件,我似乎无法破译它的某些部分。 我知道SAX是一种流媒体机制,但在谈论DOM时,各种网站都会讨论模型“加载到完整文件”或“加载所有标签”,并建议将SAX与大型XML文件一起使用。 / p>

DOM实际加载完整文件的程度如何?第二个我访问根节点,它是否为文件的每个字节分配程序内存?是否仅在加载文本内容时将标记加载到最低级别?

我将使用大文件,但随机访问会很有用,编辑是必需的,所以我相信DOM是我的最佳选择。

非常感谢。

3 个答案:

答案 0 :(得分:3)

它确实加载整个文件并在内存中构造树结构。因此,将加载每个标记,属性和任何嵌套标记(无论嵌套级别多少)。只需要构建的树越大,你拥有的XML文件越大。

答案 1 :(得分:2)

是的,DOM读取整个文档,解析它并将其放入内存中。

答案 2 :(得分:0)

如果您使用DOM进行解析,则执行与此类似的操作:

 DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
 Document doc = builder.parse(file);

(在try / catch中)

执行解析的那一刻,Document doc变量将包含表示为DOM层次结构的整个文档。