JAXP(Java API for XML Processing,意为XML处理的Java API)是Java XML程序设计的应用程序接口之一,它提供解析和验证XML文档的能力。JAXP是在Java社区进程下开发的,包括 JSR 5 (JAXP 1.0)和 JSR 63 (JAXP 1.1和1.2)两个规范。
JAXP解析XML的三种基本接口为
[b]DOM接口 [/b]
解析器解析整个XML文档并构造出该文档的一个完整的内存表示
DOM解析器被称作DocumentBuilder,因为它构建一个内存中的Document表示。javax.xml.parsers.DocumentBuilder是由javax.xml.parsers.DocumentBuilderFactory创建的。DocumentBuilder创建org.w3c.dom.Document的实例,Document是一个包含XML文档中的所有节点的树。结构中的每一个树节点实现org.w3c.dom.Node接口。树节点有许多不同类型的,表示XML文档中不同的数据类型。最重要的节点类型有:
* 元素节点,具有许多属性
* 文本节点,代表文档元素开始和结束标签之间的文字。
节点类型的完整列表,请参见org.w3c.dom包中的Javadoc文档。
SAX接口
SAX解析器被称作SAXParser,SAXParser 是由javax.xml.parsers.SAXParserFactory创建的。与DOM解析器不同,SAX解析器并不创建XML文档的内存表示,因此要更快使用更少的内存。而是,SAX解析器通过调用回调方法将XML文档结构告知客户端,也就是说,通过调用提供给解析器的org.xml.sax.helpers.DefaultHandler实例上的方法。
DefaultHandler类实现了ContentHandler,ErrorHandler,DTDHandler以及EntityResolver等接口。大多数客户端甘心ContentHandler接口中定义的方法,当SAX解析器在XML文档中遇到元素时,相应的方法将被调用。接口中最重要的方法有:
* startDocument()和endDocument()方法,当XML文档的开始和结束时被调用。
* startElement()和endElement()方法,当一个文档元素开始和结束时被调用。
* characters()方法,调用处理XML文档元素的开始标签和结束标签之间的文本数据。
客户端提供一个DefaultHandler的子类,实现这些方法,并在方法中对数据进行处理,可能会将数据存入数据库,或写出到流中。
在解析过程中,解析器可能需要访问外部文档。因此可能会使用XML Catalog将经常使用的XML文档存储在本地的缓存中。
SAX接口是在2000年5月发布的Java 1.3中引入的。
StAX接口
StAX的设计介于DOM和SAX接口之间,在它的隐喻中,程序的入口点是一个代表文档中一个位置的光标。应用程序可以按需向前移动光标 – 从解析器中“拉”出信息。这与基于事件的API(如SAX)不同,SAX将数据“推”给应用程序,要求应用程序维护事件间的状态,如果应用需要知道在文档中的位置信息。
StAX的设计介于DOM和SAX接口之间,在它的隐喻中,程序的入口点是一个代表文档中一个位置的光标。应用程序可以按需向前移动光标 – 从解析器中“拉”出信息。这与基于事件的API(如SAX)不同,SAX将数据“推”给应用程序,要求应用程序维护事件间的状态,如果应用需要知道在文档中的位置信息。
XSLT接口
XSLT(可扩展样式表转换语言)允许将XML文档转换为数据其他形式。应用程序使用javax.xml.transform包中的接口可以进行XSLT转换。接口最初被称为TrAX (Transformation API for XML),是由许多Java XSLT处理器的开发人员通过非正式协作开发的。
接口的主要特性包括:
* 工厂类javax.xml.transform.TransformerFactory可以使应用动态地选择使用哪一个XSLT处理器。
* TransformerFactory上的方法用来创建javax.xml.transform.Templates对象, 表示样式表的编译后的形式。这是一个线程安全的对象,可以重复使用,顺序或并发,在多个源文档上应用同一个样式表(或用用一个源文档,不同的参数)
* Templates上的方法可以创建javax.xml.transform.Transformer,表示样式表的可执行形式。Transformer不可以在线程间共享,虽然也是可重用的。Transformer提供方法设置样式表参数和序列化选项(例如,输出是否缩进),以及一个实际运行转换的方法。
JAXP定义了javax.xml.transform.Source和javax.xml.transform.Result两个抽象接口来表示转换的输入和输出。某种程度上,这是非常规使用Java接口,这是因为并不期待一个处理器会接受任何实现该接口的类,每一个处理器可以选择支持那些Source和Result的处理。实际上所有JAXP处理器支持三种标准类型的Source (DOMSource,SAXSource,StreamSource)以及三种标准类型的Result (DOMResult,SAXResult,StreamResult)以及处理器自己的实现。
分享到:
相关推荐
3. jaxp.jar:Java API for XML Processing (JAXP) 是Java平台的一部分,提供了一组API来处理XML。JAXP包括了用于解析XML、执行XSLT转换和验证XML文档的接口。在J-Sim中,jaxp.jar作为XML处理的基础框架,使得开发者...
在Java中,处理XML文档时,Java API for XML Parsing(JAXP)是一个核心工具集,它提供了在Java环境中解析XML的接口和类。 **XML的基本概念** XML文档由元素、属性、文本和注释组成。元素是XML文档的基本构建块,...
JAXP,全称为Java API for XML Processing,是Java平台中处理XML的标准API。它包含了处理XML文档的三个主要组件:DOM(Document Object Model),SAX(Simple API for XML)和XSLT(eXtensible Stylesheet Language ...
4. **JAXP(Java API for XML Processing)**:这是Java平台的XML处理框架,包括了SAX和DOM解析器的工厂接口,以及XPath处理器。通过JAXP,开发者可以灵活地选择不同的解析策略。 5. **StAX(Streaming API for XML...
标题"基于Java的实例源码-JAXP数据验证引擎 Serene.zip"指出这是一个关于Java编程的实例,重点在于JAXP(Java API for XML Processing)的数据验证引擎,名为Serene。JAXP是Java平台用于处理XML的标准API,包括解析...
5. **DOM4J和JDOM**:这两者是Java社区广泛使用的两个第三方XML库,提供了比JAXP更高级的API,使XML处理更加方便。DOM4J支持XPath查询,而JDOM提供了更简洁的API设计。 6. **XPath**:XPath是一种在XML文档中查找...
JAXP(Java API for XML Processing)是Java平台上的一个标准API,用于处理XML文档。而Serene是一个基于JAXP的数据验证引擎,它提供了一种高效且灵活的方式来验证XML文档是否符合特定的XML模式或DTD。本文将通过分析...
《Java与XML》(第三版)的内容涵盖了所有主要的Java XML处理库程序,全面讲解了SAX、DOM、StAX、JDOM以及dom4j的应用程序编程接口,同时还囊括了最新版本的用于XML处理的Java应用程序编程接口(JAXP)和用于XML绑定...
XML(eXtensible Markup Language)是一...总结来说,JAXP为Java开发者提供了方便的XML处理能力,无论是简单的数据提取还是复杂的XML文档操作,都能胜任。通过理解和掌握JAXP,你可以更好地处理XML在实际项目中的应用。
JAXP是Java平台上的XML处理API,它包含了SAX、DOM和XSLT的接口和实现,是Java处理XML的基础。 总结来说,Java XML编程涵盖了从解析、生成XML到验证文档结构、转换文档等多个方面,涉及多个API和工具。理解并熟练...
总之,JAXP是Java与XML交互的关键桥梁,它不仅简化了XML文档的解析和处理过程,而且通过其灵活的架构设计,为开发者提供了强大的工具箱,使其能够在不同的解析器实现间自由切换,从而构建出既高效又可靠的XML处理...
### XML-Java解析详解 #### 一、XML与Java的关系 XML(Extensible Markup Language,可扩展标记语言)作为一...此外,JAXP作为Java平台提供的标准API,使得开发人员可以更加灵活地使用SAX和DOM等技术来处理XML文档。
2. **Apache XML APIs**: 这是一组与XML相关的API集合,包括JAXP(Java API for XML Processing)、TrAX(Transformation API for XML)、StAX(Streaming API for XML)等。JAXP允许程序在运行时动态选择XML处理器...
4. **JAXP(Java API for XML Processing)**:JAXP提供了XML解析和转换的接口,支持DOM、SAX和XSLT,是Java平台上处理XML的基础。 5. **XPath**:XPath是用于在XML文档中查找信息的语言,它可以根据表达式选取节点...
- **XStream:** 是一个轻量级、易于使用的库,支持将Java对象转换为XML,反之亦然,它提供了更简洁的API和更灵活的XML格式。 3. **DOM4J:** 这是一个非常流行的Java XML库,它扩展了DOM API,提供了一些额外的...
5. **JAXP(Java API for XML Processing)**:JAXP是Java平台中处理XML的标准API,包括了XPath、XSLT和DOM的实现。在XML Commons中,它提供了对JAXP的兼容性和扩展。 6. **StaX(Streaming API for XML)**:StaX...
在Java中,我们通常使用DOM(文档对象模型)、SAX(简单API for XML)和StAX(流式API for XML)这三种解析器来处理XML。 DOM解析器将整个XML文档加载到内存中,形成一棵元素树,方便开发者遍历和操作。然而,对于...