Java for XML: JAXP、JAXB、JAXM、JAX-RPC、JAX-WS

时间:2021-10-13 20:57:03

在XML领域里,对XML文件的校验有两种方式:DTD校验、Schema校验。在Java中,对于XML的解析,有多种方式:DOM解析、SAX解析、StAX解析。结合XML和Java后,就产生了Bind技术,将XML和Java Bean进行相互转化。

Java对XML处理技术(JAXP)简述

JAXP,Java API for XML Processing。包括了对XML的解析、校验、查询、变换。

1)解析,将XML解析成对应的内存对象,典型的如DOM解析中的Document。Java Se中目前提供的解析技术有:DOM、SAX、STAX。

2)校验,Java Se目前支持DTD、Schema校验。

3)查询,这里说的查询是指采用XPath方式查询。这部分有独立的API。至于DOM解析中根据节点的上下级关系的查找,不作为查询技术。由于XPath是W3c定义的关于XML的查询技术,所以XPath是针对DOM解析方式的。

4)变换,就是将XML文档的内容变换到指定的目标上,例如,使用JavaAPI修改了XML元素后(是内存对象的修改),保存到指定的位置。

针对三种不同的解析方式,形成了三种不同的处理方式。但是有一点可以是一样的,就是变换的过程。这三种处理方式,都可以采用Transform相关的API进行内存对象到文件的变换。

1) DOM

DOM 是 W3C 处理 XML 的标准 API,它是许多其它与 XML 处理相关的标准的基础,不仅是 Java,其它诸如 JavaScript,PHP,MS .NET 等等语言都实现了该标准, 成为了应用最为广泛的 XML 处理方式。当然,为了能提供更多更加强大的功能,Java 对于 DOM 直接扩展工具类有很多,比如很多 Java 程序员耳熟能详的 JDOM,DOM4J 等等, 它们基本上属于对 DOM 接口功能的扩充,保留了很多 DOM API 的特性,许多原本的 DOM 程序员甚至都没有任何障碍就熟练掌握了另外两者的使用,直观、易于操作的方式使它深受广大 Java 程序员的喜爱。

采用DOM解析方式的处理流程:

1)  使用Dom解析器将Xml文件解析成Document(就是一棵DOM树)

2)  根据需要对Document进行增删改查操作

3)  必要的情况下,生成新的xml文件

另外对Document节点进行查找时,可以根据DOM树结构,可以使用XPath。

2) SAX

SAX 使用了最少的系统资源和最快速的解析方式对 XML 处理提供了支持。 但随之而来繁琐的查找方式也给广大程序员带来许多困扰,常常令人头痛不已,同时它对 XPath 查询功能的支持,令人们对它又爱又恨。

采用SAX解析方式的处理流程:

1)使用SAX解析器读入文档时调用各种Handler进行处理。

2)必要的情况下,生成新的XML文档

3) StAX

StAx ,Streaming API for XML

它位于javax.xml.stream包中。XMLStreamReader接口用于分析一个XML文档,而XMLStreamWriter接口用于生成一个XML文档。XMLEventReader负责使用一个对象事件迭代子分析XML事件-这与XMLStreamReader所使用的光标机制形成对照。本教程将基于JDK 6.0中的StAX实现来完成对一个XML文档的分析。

Java Bean与XML的绑定(JAXB)

JAXB是专门用于将Java对象转为XML文件,或者将XML文件转为Java对象的API。

他们之间的桥梁就是XML的Schema。想要学习JAXB,可以参考https://jaxb.java.net/tutorial/

Java for XML: JAXP、JAXB、JAXM、JAX-RPC、JAX-WS

SOAP消息(JAXM)

在javax.xml.soap包下。用于JAX-WS中的消息。

WebService (JAX-RPC \ JAX-WS)

用于Web Service的API:Jax-rpc Jax-ws。

Jax-rpchttps://java.net/projects/jax-rpc/

JAX-RPC(基于可扩展标记语言XML的远程过程调用的Java应用程序接口)是Java Web服务开发包(WSDP)的应用程序接口(API),WSDP能使Java开发者在Web服务或其他的Web应用程序中包括远程过程调用(RPC)。JAX-RPC致力于要使应用程序或Web服务调用其他应用程序或Web服务变得更加容易。

JAX-RPC为基于SOAP(简单对象访问协议)的应用程序的开发提供了一个编程模型。JAX-RPC编程模型通过抽象SOAP协议层的运行机制与提供Java和Web服务描述语言(WSDL)间的映射服务来简化开发。

Jax-ws :https://jax-ws.java.net/

JAX-WS规范是一组XML web services的JAVA API,JAX-WS允许开发者可以选择RPC-oriented或者message-oriented 来实现自己的web services。

在 JAX-WS中,一个远程调用可以转换为一个基于XML的协议例如SOAP,在使用JAX-WS过程中,开发者不需要编写任何生成和处理SOAP消息的代码。JAX-WS的运行时实现会将这些API的调用转换成为对应的SOAP消息。