DOM,SAX和JAXP
DOM: Document Object Model
SAX: Simple API for XML
有没有办法让我们在更换解析器时,不用对己发布的程序做任何改动呢?JAXP API可以帮助我们实现这一点.为了屏蔽具体厂商的实现,让java开发人员以一种标准的方式对XML进行编程,SUN公司制定了JAXP(Java API for XML processing)规范.JAXP没有提供解析xml的新方法,也没有为xml的处理提供新功能,它只是在解析器上封装了一个抽象层,允许开发人员以独立于厂商的api调用访问xml数据.
JAXP开发由javax.xml包及其子包,org.w3c.dom包及其子包,org.xml.sax包及其子包组成.在javax.xml.parsers包中,定义了几个工厂类,用于加载dom和sax的实现类.jaxp由接口,抽象类和一些辅助类组成,符合jaxp规范的解析器实现其中的接口和抽象类,开发人员只要使用jaxp的api编程,底层的解析器就可以任意切换.
DOM在内存中以节点树的形式表示XML文档,由于树在内存中是持久的,因此可以在任何时候对树中的节点进行导航,并可以对其进行修改.DOM的缺点是,对于特别大的文档,解析并加载整个文档将会很慢,而且会消耗大量的资源.
SAX是一种基于事件驱动的API.SAX解析器在解析XML文档时可以触发一系列的事件,当发现一个标记时,它可以激活一个回调方法,告诉该方法找到一个标记.SAX不存储先前的数据,因此不能对XML文档进行修改.SAX解析速度快,对内存的需求低,这对大文档来说是一个优点.
dom4j与JDOM有许多相似之处,不过功能更为强大,性能也更为优异.DOM4J在API中集成了对XPATH的支持,提供了用于大文档的基于事件的处理模型.DOM4J自带了一个SAX解析器Aelfred2,在没有其他解析器可用的情况下,将使用这个解析器.
Xsl转换XSL(eXtensible Stylesheet Language)-可扩展样式表放言,主要用于将一个XML文档转换为另外的文档(XML文档,HTML文档),以及定义转换后的文档的显示外观.XSL实际上包含了3种语言:
1.XSL转换 (XSL Transformations, XSLT)
2.XML路径语言 (XPath)
3.XSL格式化对象.