Java中关于XML的API_MySQL

Jun 01, 2016 pm 02:11 PM
api java xml 使用 について できる 成し遂げる

  简单介绍一下Java关于xml的API,这样大家看到了缩写就知道是干什么的了。水平有限,多多包涵。
  
  1、JAXP(Java API for XML Parsing)

  2、JAXB(Java API for XML Binding)

  3、JAXM(Java API for XML Messaging)

  4、JAX-RPC(Java API for XML-RPC)

  1、JAXP定义了在Java中使用DOM, SAX, XSLT的通用的接口。这样在你的程序中你只要使用这些通用的接口,当你需要改变具体的实现时候也不需要修改代码。比如,你用的XSLT处理器太慢了,你想换一个,你不需要修改你以前的代码,只要修改一下JAXP的相关配置。(在后面我将详细地介绍)作为一个共同的接口,JAXP也有所谓的“最小公分母”效应,也就是说它支持的东西很有限。JAXP1.0支持XML1.0,XML Namespace1.0,SAX1.0以及DOM level 1。而JAXP1.1增加了对SAX2.0,DOM level 2以及XSLT1.0的支持。很明显如果你想使用Xalan的XPath相关的接口,JAXP就没有支持,你也只能将代码绑定到特定的Xalan的API上了。

  这里还要提一下JDOM,虽然它没有实现JAXP,但是由于它使用的简单性,还是很受欢迎,并且成为了JCP正式推荐的API。它也是一种树状的结构表现XML,在使用方法上要比w3c的dom标准简单易用的多。最新版本的JDOM在其内部已经开始使用JAXP的API,它会尽可能的去调用JAXP的API,如果不行就使用自己的默认XML解析器Xerces,XSLT处理器Xalan。

  2、JAXB定义了Java数据对象和xml结构之间的一种双向映射关系。这样你就可以很方便地将一个Java对象存储为一个xml文档,也可以从一个xml文档实例化一个Java对象。它的结构是这样子的:首先要有xml的dtd以及binding schema(这个不是xml的schema,而是一个定义Java对象和xml结构之间映射关系xml文档),通过这两个文件JAXB就可以生成与xml文档结构一致的Java源文件,编译之后就可以很方便地通过具体的xml文档得到与xml结构一致的Java类(就是生成的那些类)unmarshalling,反过来marshalling也可以。

  它的缺点也很明显,一旦xml的结构发生了改变,就要重新写bindng schema以及重新生成编译Java类。

  sun的动作总是一如既往地慢,在JAXB出台之前已经有了一些用于xml data binding的框架,我们再来看看同样也是做xml databinding但是并没有实现JAXB的框架:

  一、Castor

  Castor不仅仅支持对XML的绑定,它还支持对LDAP对象,用OQL将SQL查询映射为对象,以及对JDO的支持。与JAXB不同的是,它需要的仅仅是xml的Schema。通过xml的Schema来生成相应的Java源代码,编译之后就可以marshalling和unmarshalling了。

  二、Zeus

  Zeus与Castor和JAXB相比,在class generation方面多做了些步骤,因此它可以支持多种的约束关系,包括对DTD,XML Schema以及TREX等等的支持。不过目前该项目好像已经不做了。

  三、Quick

  Quick也是一个非常灵活的框架,详细的情况可以google一下。

  3、JAXM

  JAXM是为SOAP通信提供访问方法和传输机制的API。目前它支持SOAP1.1规范以及同步和异步通信。JAXM定义了大量服务,JAXM的实现产品将会提供这些服务,使得开发者不用面对复杂的通信系统。JAXM体系结构中包括两个重要的组件:JAXM Client和Provider。Client通常是作为J2EE web或EJB容器的一部分,以提供你所写的程序访问JAXM服务的能力。而Provider可以以不同的方式实现,主要负责发送和接收SOAP消息。这样你就可以直接地使用JAXM的API直接发送和接收SOAP消息。

  4、JAX-RPC

  JAX-RPC是通过xml进行远程过程调用的Java API。它是基于SOAP技术的,使用SOAP作为底层的协议。这样对于开发者来说,只有方法,参数,返回值是可见的,而底层的soap通信都被隐藏起来了,开发人员不需要与之直接打交道。

  JAXM和JAX-RPC在Web Services方面有很重要的作用。

  补充: JAXP框架查找具体实现的步骤

  JDK1.4自带的是JAXP的参考实现:Crimson的DOM, SAX解析器,Xalan的XSLT处理器。

  如果你想用其他的实现替代它们,那就必须了解JAXP框架查找实现的具体步骤:

  1、首先,算法会通过诸如javax.xml.transform.TranformerFactory这样的系统属性来定位具体实现的类。你可以在命令行中直接指定:

  java -Djavax.xml.transform.TransformerFactory=com.foo.ConcreteTransformer YourApp

  ConcreteTransformer是实现了TransformerFactory的子类,如果你用的是ant,也可以在build file中指定。

  同样地有,javax.xml.parsers.document.uilderFactory和javax.xml.parsers.SAXBuilderFactory属性。

  2、接着,如果系统属性中没有指定,JAXP将会在JRE的目录中查找lib/jaxp.properties属性文件,它像一般的properties文件一样是由name=value组成的,假设有如下的一行:

  javax.xml.transform.TransformerFactory=com.foo.ConcreteTransformer

  那么JAXP就会使用相应的TransformerFactory实现。

  在Java程序中,你可以通过如下的代码获得JRE所在的目录:

  String javaHomeDir = System.getProperty("java.home");

  不过要注意,如果是在一些IDE中使用,IDE会改变这个java.home的值,比如JBuilder。

  3、如果jaxp.properties不存在或者没有相应的值,那么JAXP将会使用JAR文件的服务提供体制来定位正确的子类。简单地说,你可以在jar文件的META-INF/services目录下新建一个名为javax.xml.transform.TransformerFactory的文件,这个文件中只有一行:com.foo.ConcreteTransformer就可以了。

  4、最后,如果上面3步都没有找到任何具体的实现,JAXP就会使用缺省的实现:Crimson和Xalan。



このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Java Springのインタビューの質問 Java Springのインタビューの質問 Aug 30, 2024 pm 04:29 PM

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

Java 8 Stream Foreachから休憩または戻ってきますか? Java 8 Stream Foreachから休憩または戻ってきますか? Feb 07, 2025 pm 12:09 PM

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

カプセルの量を見つけるためのJavaプログラム カプセルの量を見つけるためのJavaプログラム Feb 07, 2025 am 11:37 AM

カプセルは3次元の幾何学的図形で、両端にシリンダーと半球で構成されています。カプセルの体積は、シリンダーの体積と両端に半球の体積を追加することで計算できます。このチュートリアルでは、さまざまな方法を使用して、Javaの特定のカプセルの体積を計算する方法について説明します。 カプセルボリュームフォーミュラ カプセルボリュームの式は次のとおりです。 カプセル体積=円筒形の体積2つの半球体積 で、 R:半球の半径。 H:シリンダーの高さ(半球を除く)。 例1 入力 RADIUS = 5ユニット 高さ= 10単位 出力 ボリューム= 1570.8立方ユニット 説明する 式を使用してボリュームを計算します。 ボリューム=π×R2×H(4

Spring Tool Suiteで最初のSpring Bootアプリケーションを実行するにはどうすればよいですか? Spring Tool Suiteで最初のSpring Bootアプリケーションを実行するにはどうすればよいですか? Feb 07, 2025 pm 12:11 PM

Spring Bootは、Java開発に革命をもたらす堅牢でスケーラブルな、生産対応のJavaアプリケーションの作成を簡素化します。 スプリングエコシステムに固有の「構成に関する慣習」アプローチは、手動のセットアップを最小化します。

未来を創る: まったくの初心者のための Java プログラミング 未来を創る: まったくの初心者のための Java プログラミング Oct 13, 2024 pm 01:32 PM

Java は、初心者と経験豊富な開発者の両方が学習できる人気のあるプログラミング言語です。このチュートリアルは基本的な概念から始まり、高度なトピックに進みます。 Java Development Kit をインストールしたら、簡単な「Hello, World!」プログラムを作成してプログラミングを練習できます。コードを理解したら、コマンド プロンプトを使用してプログラムをコンパイルして実行すると、コンソールに「Hello, World!」と出力されます。 Java の学習はプログラミングの旅の始まりであり、習熟が深まるにつれて、より複雑なアプリケーションを作成できるようになります。

Java をシンプルに: プログラミング能力を高める初心者向けガイド Java をシンプルに: プログラミング能力を高める初心者向けガイド Oct 11, 2024 pm 06:30 PM

Java をシンプルに: プログラミング能力の初心者向けガイド はじめに Java は、モバイル アプリケーションからエンタープライズ レベルのシステムに至るまで、あらゆるもので使用される強力なプログラミング言語です。初心者にとって、Java の構文はシンプルで理解しやすいため、プログラミングの学習に最適です。基本構文 Java は、クラスベースのオブジェクト指向プログラミング パラダイムを使用します。クラスは、関連するデータと動作をまとめて編成するテンプレートです。簡単な Java クラスの例を次に示します。 publicclassperson{privateStringname;privateintage;

スタックの下部に要素を挿入するJavaプログラム スタックの下部に要素を挿入するJavaプログラム Feb 07, 2025 am 11:59 AM

スタックは、LIFO(最後の、最初のアウト)の原則に従うデータ構造です。言い換えれば、スタックに最後に追加する要素は、削除される最初の要素です。要素をスタックに追加(またはプッシュ)すると、それらは上に配置されます。つまり、とりわけ

See all articles