当前位置:  开发笔记 > 编程语言 > 正文

在Java中直接使用JAXP而不是DOM/SAX有什么好处?

如何解决《在Java中直接使用JAXP而不是DOM/SAX有什么好处?》经验,为你挑选了1个好方法。

作为XML解析的新手,我正在尝试理解不同的技术.针对不同需求存在大量不同的技术:

W3C-DOM

XOM

JDOM

JAXP

JAXB

DOM

SAX

StAX的

TrAX的

Woodstox

DOM4J

赤红

VTD-XML

的Xerces-J

蓖麻

XStream的

...

仅举几个.

DOM和SAX似乎是解析和处理XML的低级方式,所以我决定专注于那些在不同来源中被提及最多并且是低级的:

DOM,SAX,JAXP.

我读过有关,一般在这里解析器上计算器,JAXP教程从Oracle,XML的解析一般,等等.

我也尝试了一些类似德语和其他的教程.

我现在正在抓一点DOM和SAX,但是使用JAXP的原因仍然超出我的意思.它似乎更像是一个在内部使用DOM,SAX,...的接口,但为什么不直接使用DOM或SAX呢?

在外行术语中使用JAXP有什么好处?



1> Michael Kay..:

(虽然你没有这么明确地说过,但你的问题似乎只与Java世界有关,而这个答案反映了这一点.)

JAXP是一组接口,包括XML解析,XSLT转换和XML模式验证.如果我们只关注XML解析方面,它的主要贡献是提供一种定位XML解析器实现的机制,因此您的源代码不会被锁定到特定产品中.坦率地说,这些日子价值有限; 常用的两个SAX/DOM解析器是JDK中嵌入的解析器和Apache Xerces.除了需要单独下载之外,Apache Xerces在各个方面都更好.

至于其他解析接口,它们分为两类:基于事件的API和基于树的API.基于树的API更易于使用,但在处理大型文档时可能会占用大量内存.

两个主要的基于事件的API是SAX(推送)和StAX(拉).拉解析是许多程序员更容易找到的东西,因为你可以使用程序堆栈来维护状态信息; 不幸的是,虽然StAX API有点儿错误 - 不同的实现已经以不同的方式修复了它的差距.StAX最完整可靠的实现是Woodstox解析器; SAX最完整可靠的实现是Apache Xerces.但是,不要尝试使用基于事件的解析方法,除非您的应用程序确实需要该级别的性能(除非您具有避免在应用程序级别丢失所有性能增益所需的经验水平.)

对于基于树的API,DOM仍然占主导地位,因为它由W3C定义并在JDK中实现,因此被视为"标准"; 这也是关于这个主题的所有书籍中提到的那个.然而,在所有树模型中,毫无疑问它是最糟糕的设计(主要是因为它早于名称空间的引入).替代方案包括JDOM2,DOM4J,XOM和AXIOM.我倾向于推荐JDOM2或XOM.

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有