【发布时间】:2016-04-09 02:28:56
【问题描述】:
作为 XML 解析的新手,我试图了解不同的技术。针对不同需求的不同技术数量之多令人困惑:
- W3C-DOM
- XOM
- jDom
- JAXP
- JAXB
- DOM
- 萨克斯
- StAX
- TrAX
- 伍德斯托克斯
- dom4j
- 深红色
- VTD-XML
- Xerces-J
- 蓖麻
- XStream
- ...
仅举几例。
DOM 和 SAX 似乎是解析和处理 XML 的一种低级方式,因此我决定专注于在不同来源中被提及最多且是低级的方式:
DOM、SAX、JAXP。
我在stackoverflow、JAXP-Tutorial from Oracle、XML-Parsing in general 等网站上阅读了有关解析器的一般信息。
我也尝试过一些教程,如this german one 等。
我现在对 DOM 和 SAX 有了一点了解,但使用 JAXP 的原因仍然超出我的理解。在内部使用 DOM、SAX、... 似乎更像是一个接口,但为什么不直接使用 DOM 或 SAX 呢?
通俗地说使用 JAXP 有什么好处?
【问题讨论】:
-
当我使用(操作/创建)xml 时,我总是使用 DOM,但这只是我个人的看法!我认为它工作得很好,并提供了您需要的所有功能。
-
ParkerHalo:DOM 似乎是一种使用 XML 的非常直观的方式。不使用 DOM 的主要原因通常被表述为文档的大小,但人们只说“如果文档太大,使用 SAX 而不是 DOM”,而从未定义“大”的含义——代码行数、文档以 MB 为单位的大小、xml 对象的数量……以及发生这种情况的数量。 20,000 行被认为是大行还是 1,000,000 行等等。
-
@hamena314 当内存不足时,您会注意到什么是大的(使用 DOM 不会花费太多时间)。至于 JAXP,它只是一个旧术语(用于 XML 处理的 Java Api)来指代 SAX/DOM/StAX 解析器。你不能真正“使用”JAXP。
-
@Kayman 这是我必须注意的事情(因为每次使用解析器时环境都不同),还是有“经验法则”,即超过 X MB,超过 Y 行代码等?因为在完成所有实现之后才注意到似乎为时已晚。