[@倚贤][¥20]Java 中,DOM 和 SAX 解析器有什么不同?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

[@倚贤][¥20]Java 中,DOM 和 SAX 解析器有什么不同?

2018-12-14 17:01:26 1474 1

问题来自Java技术沙龙的李博
Java线下沙龙报名链接:https://yq.aliyun.com/activity/796

取消 提交回答
全部回答(1)
  • cysnow
    2019-07-17 23:21:25

    SAX与DOM之间有一些显著区别,包括:
    DOM是复杂对象处理的首选,比如当XML比较复杂的时候,或者当你需要随机处理文档中数据的时候。SAX从文档的开始通过每一节点移动,以定位一个特定的节点。
    DOM为载入到内存的文档节点建立类型描述。最终,这些描述呈现了可容易横向移动、潜在巨大、树型结构。如果XML很冗长,DOM就会显示出无法控制的胀 大。例如,一个300KB的XML文档可以导致RAM或者虚拟内存中的3,000,000KB的DOM树型结构。通过比较就会发现,一个SAX文档根本就 没有被解构,它也没有隐藏在内存空间中(当然当XML流被读入时,会有部分文档暂时隐藏在内存中)。SAX就是一种“更轻巧的”技术──它可以给你的系统 带来更轻的负担。SAX相当于观看一场马拉松比赛,而DOM就好比邀请所有的比赛选手到家里参加晚餐。
    所以,你如何选择SAX和DOM?如果你处理复杂的东西,比如高级XSLT转换,或者Xpath过滤,请选择使用DOM。如果你建立或者更改XML文档,你也可以选择DOM。
    相反,你可以使用SAX来查询或者阅读XML文档。SAX可以快速扫描一个大型的XML文档,当它找到查询标准时就会立即停止,然后再处理之。
    在某些情况下,在一个方案中,最佳的选择是使用DOM和SAX处理不同的部分。例如,你可以使用DOM将XML载入到内存并改变它,然后通过从DOM树中发送一个SAX流而转移最后的结果。

    0 0
相关问答

0

回答

请问java中访问TreeSet对象中特定元素的性能最有效方法是什么?

2021-11-12 17:22:45 139浏览量 回答数 0

0

回答

请问使用java将多维数组转字符串性能最优的做法是什么?

2021-11-07 11:58:20 138浏览量 回答数 0

0

回答

请问在java中将XML文档写入文件性能最快的做法是什么?

2021-11-07 11:58:19 254浏览量 回答数 0

0

回答

请问在java中将XML文档转换为流对象性能最快的做法是什么?

2021-11-07 11:58:19 172浏览量 回答数 0

0

回答

请问java中将对象转换为字节缓冲区性能最快方法的是什么?

2021-11-12 17:22:37 404浏览量 回答数 0

0

回答

请问java解析XML DOM对象性能最快的做法是什么?

2021-11-07 11:58:19 446浏览量 回答数 0

0

回答

请问如何对java中的HashSet集合中的对象相互比较操作,有没有性能更快的做法?

2021-11-07 11:58:19 127浏览量 回答数 0

0

回答

java中重新组合两个TreeMap集合对象到一个TreeMap对象性能最优方法的是什么?

2021-11-07 23:01:50 240浏览量 回答数 0

0

回答

java性能问题排查:在linux系统中如何查看java线程内存使用率?

2021-11-12 17:07:01 447浏览量 回答数 0

0

回答

java中替换TreeMap某个key的value数据性能最快方法的是什么?

2021-11-07 23:01:50 201浏览量 回答数 0
+关注
李博 bluemind
云栖社区Java、Redis、MongoDB运营小编,有意合作请联系钉钉:15810436147
文章
问答
问答排行榜
最热
最新
相关电子书
更多
Java基础入门(四)-泛型、反射、注解
立即下载
Java Spring Boot开发实战系列课程【第7讲】:Spring Boot 2.0安全机制与MVC身份验证实战(Java面试题)
立即下载
Java Spring Boot开发实战系列课程【第6讲】:Spring Boot 2.0实战MyBatis与优化(Java面试题)
立即下载