Xerces-quick-guide
Apache Xerces-XMLの概要
XMLとは何ですか?
XMLは、プレーンテキスト形式でデータを保存および転送するために設計されたシンプルなテキストベースの言語です。 Extensible Markup Languageの略です。 以下は、XMLの主要な機能の一部です。
- XMLはマークアップ言語です。
- XMLは、HTMLのようなタグベースの言語です。
- XMLタグは、HTMLのように事前定義されていません。
- 独自のタグを定義できるため、拡張可能言語と呼ばれます。
- XMLタグは、自己記述的になるように設計されています。
- XMLは、データの保存と転送に関するW3C勧告です。
例
利点
以下は、XMLによって提供される利点です-
- テクノロジーにとらわれない-XMLはプレーンテキストなので、テクノロジーに依存しません。 データの保存および送信の目的で、あらゆるテクノロジーで使用できます。
- 人間が読める-XMLは単純なテキスト形式を使用します。 それは人間が読んで理解できるものです。
- 拡張可能-XMLでは、カスタムタグを非常に簡単に作成して使用できます。
- Allow Validation -XSD、DTD、およびXML構造を使用すると、簡単に検証できます。
デメリット
以下は、XMLの使用の欠点です-
- 冗長構文-通常、XMLファイルには多数の繰り返し用語が含まれています。
- 冗長-冗長言語であるため、XMLファイルのサイズは送信およびストレージのコストを増加させます。
Apache Xerces-環境設定
この章では、WindowsおよびLinuxベースのシステムでApache Xercesをセットアップするプロセスについて説明します。 Apache Xercesは、複雑なセットアップ手順なしで、簡単な手順で簡単にインストールして現在のJava環境に統合できます。 インストール中にユーザー管理が必要です。
システム要求
JDK | Java SE 2 JDK 1.5 or above |
Memory | 1 GB RAM (recommended) |
Disk Space | No minimum requirement |
Operating System Version | Windows XP or above, Linux |
次に、Apache Xercesをインストールする手順を進めましょう。
ステップ1:Javaインストールを確認する
まず、システムにJava Software Development Kit(SDK)をインストールする必要があります。 これを確認するには、作業しているプラットフォームに応じて2つのコマンドのいずれかを実行します。
Javaのインストールが成功すると、Javaインストールの現在のバージョンと仕様が表示されます。 サンプル出力を次の表に示します。
Platform | Command | Sample Output |
---|---|---|
Windows | Open Command Console and type: java -version | Java version "1.7.0_60" Java ™ SE Run Time Environment (build 1.7.0_60-b19) Java Hotspot ™ 64-bit Server VM (build 24.60b09,mixed mode) |
Linux | Open command terminal and type: $java -version | Java version "1.7.0_25" Open JDK Runtime Environment (rhel-2.3.10.4.el6_4-x86_64) Open JDK 64-Bit Server VM (build 23.7-b01, mixed mode) |
- このチュートリアルの読者は、システムにJava SDKバージョン1.7.0_60がインストールされていることを前提としています。 *Java SDKがない場合は、https://www.oracle.com/technetwork/java/javase/downloads/indexlから現在のバージョンをダウンロードし、インストールしてください。
ステップ2:Java環境を設定する
Javaがマシンにインストールされているベースディレクトリの場所を指すように、環境変数JAVA_HOMEを設定します。 例えば、
Sr.No. | Platform & Description |
---|---|
1 |
JAVA_HOMEをC:\ ProgramFiles \ java \ jdk1.7.0_60に設定します |
2 |
Linux エクスポートJAVA_HOME =/usr/local/java-current |
Javaコンパイラの場所の完全パスをシステムパスに追加します。
Sr.No. | Platform & Description |
---|---|
1 |
Windows 文字列「C:\ Program Files \ Java \ jdk1.7.0_60 \ bin」をシステム変数PATHの最後に追加します。 |
2 |
Linux エクスポートPATH = $ PATH:$ JAVA_HOME/bin/ |
上記で説明したように、コマンドプロンプトからコマンドjava versionを実行します。
ステップ3:Apache Xercesライブラリをインストールする
https://xerces.apache.org/mirrors.cgi "からApache Xercesの最新バージョンをダウンロードし、必要なライブラリが保存できるフォルダーにそのコンテンツを解凍します。 Javaプログラムにリンクされます。 Cドライブのフォルダーxerces-2_11_0にファイルが収集されていると仮定しましょう。
上記の画像で強調表示されている5つのjarの完全なパスをCLASSPATHに追加します。
Sr.No. | Platform & Description |
---|---|
1 |
Windows ユーザー変数CLASSPATHの末尾に次の文字列を追加します- C:\ xerces-2_11_0 \ resolver.jar; C:\ xerces-2_11_0 \ serializer.jar; C:\ xerces-2_11_0 \ xercesImpl.jar; C:\ xerces-2_11_0 \ xercesSamples.jar; C:\ xerces-2_11_0 \ xml-apis.jar; |
2 |
Linux エクスポートCLASSPATH = $ CLASSPATH- /usr/share/xerces-2_11_0\resolver.jar; /usr/share/xerces-2_11_0\serializer.jar; /usr/share/xerces-2_11_0\xercesImpl.jar; /usr/share/xerces-2_11_0\xercesSamples.jar; /usr/share/xerces-2_11_0\xml-apis.jar; |
Apache Xerces-XMLパーサー
Apache Xerces2とは何ですか?
Xerces2はJavaベースのプロセッサであり、標準のインターフェイスとXML解析API標準に続く実装を提供します-
- ドキュメントオブジェクトモデル(DOM)レベル3
- Simple API for XML(SAX)2.0.2
- ストリーミングAPI for XML(StAX)1.0イベントAPI
- XML処理用のJava API(JAXP)1.4
XML解析とは何ですか?
XMLの解析とは、XMLドキュメントを通過してデータにアクセスしたり、何らかの方法でデータを変更したりすることです。
XMLパーサーとは何ですか?
XML Parserは、XMLドキュメントに存在するデータにアクセスまたは変更する方法を提供します。 Javaは、XMLドキュメントを解析するための複数のオプションを提供します。 以下は、XMLドキュメントの解析に一般的に使用されるさまざまなタイプのパーサーです。
- Dom Parser -ドキュメントの完全なコンテンツをロードし、メモリ内に完全な階層ツリーを作成することにより、ドキュメントを解析します。
- SAX Parser -イベントベースのトリガーでドキュメントを解析します。 完全なドキュメントをメモリにロードしません。
- StAX Parser -SAXパーサーと同様の方法でドキュメントを解析しますが、より効率的な方法です。
次に、以降の章でApache Xercesライブラリを使用して各パーサーを詳しく説明します。
Apache Xerces-DOMパーサーの概要
Document Object Modelは、World Wide Web Consortium(W3C)の公式勧告です。 プログラムがXMLドキュメントのスタイル、構造、およびコンテンツにアクセスして更新できるようにするインターフェイスを定義します。 DOMをサポートするXMLパーサーは、そのインターフェイスを実装します。
いつ使うの?
次の場合は、DOMパーサーを使用する必要があります-
- ドキュメントの構造について多くを知る必要があります。
- ドキュメントの一部を移動する必要があります(たとえば、特定の要素を並べ替えることができます)。
- ドキュメント内の情報を複数回使用する必要があります。
あなたは何を得ますか?
DOMパーサーでXMLドキュメントを解析すると、ドキュメントのすべての要素を含むツリー構造が返されます。 DOMは、ドキュメントの内容と構造を調べるために使用できるさまざまな機能を提供します。
利点
DOMは、ドキュメント構造を操作するための一般的なインターフェイスです。 その設計目標の1つは、1つのDOM準拠のパーサー用に記述されたJavaコードを、変更せずに他のDOM準拠のパーサーで実行することです。
DOMインターフェース
DOMはいくつかのJavaインターフェースを定義します。 最も一般的なインターフェイスは次のとおりです-
- Node -DOMの基本データ型。
- 要素-扱うオブジェクトの大部分は要素です。
- Attr -要素の属性を表します。
- テキスト-要素または属性の実際のコンテンツ。
- ドキュメント-XMLドキュメント全体を表します。 Documentオブジェクトは、多くの場合、DOMツリーと呼ばれます。
一般的なDOMメソッド
あなたがDOMで作業しているとき、頻繁に使用されるいくつかの方法があります-
- * Document.getDocumentElement()*-ドキュメントのルート要素を返します。
- * Node.getFirstChild()*-指定されたノードの最初の子を返します。
- * Node.getLastChild()*-指定されたノードの最後の子を返します。
- * Node.getNextSibling()*-これらのメソッドは、指定されたノードの次の兄弟を返します。
- * Node.getPreviousSibling()*-これらのメソッドは、指定されたノードの前の兄弟を返します。
- * Node.getAttribute(attrName)*-指定されたノードについて、要求された名前の属性を返します。
DOMパーサー-XMLドキュメントの解析
DOMを使用する手順
以下は、DOMパーサーを使用してドキュメントを解析するときに使用される手順です。
- XML関連のパッケージをインポートします。
- DocumentBuilderを作成する
- ファイルまたはストリームからドキュメントを作成する
- ルート要素を抽出する
- 属性を調べる
- サブ要素を調べる
XML関連のパッケージをインポートする
DocumentBuilderを作成する
ファイルまたはストリームからドキュメントを作成する
ルート要素を抽出する
属性を調べる
サブ要素を調べる
デモの例
これは、解析する必要がある入力xmlファイルです-
デモ例
DomParserDemo.java
上記のプログラムは、次の結果を生成します-
DOMパーサー-XMLドキュメントのクエリ
デモ例
ここにクエリする必要がある入力xmlファイルがあります-
デモ例
QueryXmlFileDemo.java
上記のプログラムは、次の結果を生成します-
DOMパーサー-XMLドキュメントの作成
デモ例
ここに作成する必要があるXMLがあります-
デモ例
CreateXmlFileDemo.java
上記のプログラムは、次の結果を生成します-
DOMパーサー-XMLドキュメントの変更
デモ例
変更する必要がある入力xmlファイルは次のとおりです-
デモ例
ModifyXmlFileDemo.java
上記のプログラムは、次の結果を生成します-
SAXパーサー-概要
SAX(Simple API for XML)は、XMLドキュメント用のイベントベースのパーサーです。 DOMパーサーとは異なり、SAXパーサーは解析ツリーを作成しません。 SAXはXMLのストリーミングインターフェイスです。つまり、SAXを使用するアプリケーションは、処理中のXMLドキュメント(要素と属性)に関するイベント通知を、ドキュメントの最上部から始まり、 ROOT要素。
- 整形式のXMLドキュメントを構成するトークンを認識して、XMLドキュメントを上から下に読み取ります。
- トークンは、ドキュメントに表示されるのと同じ順序で処理されます。
- アプリケーションプログラム、つまりパーサーが発生したときに遭遇したトークンの性質を報告します。
- アプリケーションプログラムは、パーサーに登録する必要がある「イベント」ハンドラーを提供します。
- トークンが識別されると、関連情報を使用してハンドラー内のコールバックメソッドが呼び出されます。
いつ使うの?
あなたはSAXパーサーを使用する必要があります-
- XMLドキュメントを上から下に直線的に処理できます。
- ドキュメントは深くネストされていません。
- DOMツリーが大量のメモリを消費する非常に大きなXMLドキュメントを処理しています。 典型的なDOM実装では、10バイトのメモリを使用して1バイトのXMLを表します。
- 解決すべき問題は、XMLドキュメントの一部のみです。
- パーサーがデータを見るとすぐにデータが利用できるため、SAXはストリームを介して到着するXMLドキュメントに適しています。
SAXの欠点
- XMLドキュメントは前方のみで処理されるため、ランダムアクセスはありません。
- パーサーが見たデータを追跡する必要がある場合、またはアイテムの順序を変更する必要がある場合は、コードを記述し、独自にデータを保存する必要があります。
ContentHandlerインターフェース
このインターフェイスは、SAXパーサーがアプリケーションプログラムにXMLドキュメントのコンポーネントを通知するために使用するコールバックメソッドを指定します。
- * void startDocument()*-ドキュメントの先頭で呼び出されます。
- * void endDocument()*-ドキュメントの先頭で呼び出されます。
- * void startElement(String uri、String localName、String qName、Attributes atts)*-要素の先頭で呼び出されます。
- * void endElement(String uri、String localName、String qName)*-要素の終わりに呼び出されます。
- * void characters(char [] ch、int start、int length)*-文字データが検出されたときに呼び出されます。
- * void ignorableWhitespace(char [] ch、int start、int length)*-DTDが存在し、無視可能な空白が見つかったときに呼び出されます。
- * void processingInstruction(String target、String data)*-処理命令が認識されると呼び出されます。
- * void setDocumentLocator(Locator locator))*-文書内の位置を識別するために使用できるロケーターを提供します。
- * void skippedEntity(String name)*-未解決のエンティティが見つかったときに呼び出されます。
- * void startPrefixMapping(String prefix、String uri)*-新しい名前空間マッピングが定義されると呼び出されます。
- * void endPrefixMapping(String prefix)*-名前空間定義がスコープを終了するときに呼び出されます。
属性インターフェイス
このインターフェイスは、要素に接続された属性を処理するためのメソッドを指定します。
- * int getLength()*-属性の数を返します。
- * String getQName(int index)*
- * String getValue(int index)*
- * String getValue(String qname)*
SAXパーサー-XMLドキュメントの解析
デモ例
これは、解析する必要がある入力xmlファイルです-
UserHandler.java
SAXParserDemo.java
上記のプログラムは、次の結果を生成します-
SAXパーサー-XMLドキュメントのクエリ
デモ例
ロール番号を問い合わせる必要がある入力テキストファイルは次のとおりです。
UserHandler.java
SAXQueryDemo.java
上記のプログラムは、次の結果を生成します-
SAXパーサー-XMLドキュメントの作成
XMLの作成には、SAXパーサーを使用するよりもStAXパーサーを使用する方が適切です。 同じことについては、Java StAX Parserセクションを参照してください。
SAXパーサー-XMLドキュメントの変更
デモ例
- </marks>タグの最後に <Result> Pass <Result/> を追加して変更する必要がある入力xmlファイルを次に示します。
SAXModifyDemo.java
上記のプログラムは、次の結果を生成します-
StAXパーサー-概要
StAXは、SAXパーサーと同様の方法でXMLドキュメントを解析するJavaベースのAPIです。 しかし、2つのAPIの間には2つの大きな違いがあります-
- StAXはPULL APIですが、SAXはPUSH APIです。 つまり、StAXパーサーの場合、クライアントアプリケーションは、必要に応じてStAXパーサーにXMLから情報を取得するように要求する必要がありますが、SAXパーサーの場合、SAXパーサーがクライアントアプリケーションに情報を通知すると、クライアントアプリケーションは情報を取得する必要があります利用可能です。
- StAX APIは、XMLドキュメントの読み取りと書き込みができます。 SAX APIを使用すると、xmlは読み取り専用になります。
以下は、StAX APIの機能です-
- 整形式のXMLドキュメントを構成するトークンを認識して、XMLドキュメントを上から下に読み取ります。
- トークンは、ドキュメントに表示されるのと同じ順序で処理されます。
- パーサーが発生したときに遭遇したトークンの性質についてアプリケーションプログラムを報告します。
- アプリケーションプログラムは、イテレータとして機能し、イベントを反復処理して必要な情報を取得する「イベント」リーダーを提供します。 使用可能な別のリーダーは、xmlノードへのポインターとして機能する「カーソル」リーダーです。
- イベントが識別されると、xmlオブジェクトをイベントオブジェクトから取得し、さらに処理できます。
いつ使うの?
あなたはStAXパーサーを使用する必要があります-
- XMLドキュメントを上から下に直線的に処理できます。
- ドキュメントは深くネストされていません。
- DOMツリーが大量のメモリを消費する非常に大きなXMLドキュメントを処理しています。 典型的なDOM実装では、10バイトのメモリを使用して1バイトのXMLを表します。
- 解決すべき問題は、XMLドキュメントの一部のみです。
- パーサーがデータを確認するとすぐにデータが利用できるため、StAXはストリームを介して到着するXMLドキュメントに対して適切に機能します。
SAXの欠点
- XMLドキュメントは順方向のみで処理されるため、XMLドキュメントへのランダムアクセスはありません。
- パーサーが見たデータを追跡する必要がある場合、またはアイテムの順序を変更する必要がある場合は、コードを記述し、独自にデータを保存する必要があります。
XMLEventReaderクラス
このクラスは、XMLドキュメントの解析中に発生したイベントを反復処理するために使用できるイベントの反復子を提供します
- * StartElement asStartElement()*-要素の値と属性を取得するために使用されます。
- * EndElement asEndElement()*-要素の終わりに呼び出されます。
- * Characters asCharacters()*-CDATA、空白などの文字を取得するために使用できます。
XMLEventWriterクラス
このインターフェイスは、イベントを作成するためのメソッドを指定します。
- * add(Event event)*-要素を含むイベントをXMLに追加します。
XMLStreamReaderクラス
このクラスは、XMLドキュメントの解析中に発生するイベントを反復処理するために使用できるイベントの反復子を提供します
- * int next()*-次のイベントを取得するために使用されます。
- * boolean hasNext()*-さらにイベントが存在するかどうかを確認するために使用
- * String getText()*-要素のテキストを取得するために使用
- * String getLocalName()*-要素の名前を取得するために使用
XMLStreamWriterクラス
このインターフェイスは、イベントを作成するためのメソッドを指定します。
- * writeStartElement(String localName)*-指定された名前の開始要素を追加します。
- * writeEndElement(String localName)*-指定された名前の終了要素を追加します。
- * writeAttribute(String localName、String value)*-属性を要素に書き込みます。
StAXパーサー-XMLドキュメントの解析
デモ例
これは、解析する必要がある入力xmlファイルです-
StAXParserDemo.java
上記のプログラムは、次の結果を生成します-
StAXパーサー-XMLドキュメントのクエリ
デモ例
これは、解析する必要がある入力xmlファイルです-
StAXParserDemo.java
上記のプログラムは、次の結果を生成します-
StAXパーサー-XMLドキュメントの作成
デモ例
作成する必要があるXMLは次のとおりです-
デモ例
StAXCreateXMLDemo.java
上記のプログラムは、次の結果を生成します-
StAXパーサー-XMLドキュメントの変更
デモ例
この例を実行するには、アプリケーションのクラスパスにjdom.jarが必要です。 jdom-2.0.5.zip。をダウンロードします
変更する必要があるXMLは次のとおりです-
デモ例
StAXModifyDemo.java
上記のプログラムは、次の結果を生成します-