ホームページ  >  記事  >  バックエンド開発  >  XML プログラミング - SAX

XML プログラミング - SAX

黄舟
黄舟オリジナル
2017-02-20 15:11:131396ブラウズ

XMLプログラミング-SAX

SAX

、正式名


XML用の単純なAPI

、はインターフェイスでもあり、ソフトウェア パッケージでもあります。これは、XML 解析の代替手段です。 SAXDOM の解析とは異なり、文書を 1 行ずつスキャンし、スキャン中に解析します。アプリケーションは読み取られたデータのみをチェックするため、データをメモリに保存する必要がなく、これは大きなドキュメントを解析する場合に大きな利点となります。 SAX は、XML

を処理するためのイベント駆動型の「プッシュ」モデルです。W3C 標準ではありませんが、広く認識されている API です。 SAXパーサーは、DOMのような完全なドキュメントツリーを構築しませんが、代わりに、ドキュメントが読み取られるときに一連のイベントをアクティブ化し、イベントハンドラーにプッシュされ、ドキュメントコンテンツへのアクセスを提供します。 PS:

SAX

は、XMLファイルを変更、削除、追加することはできません。 なぜSAX

テクノロジーを導入するのですか?

DOM テクノロジーも非常に優れた DOM

解析ソリューションです。なぜ SAX テクノロジーがまだ登場しているのですか?理由は非常に単純で、DOMXMLをドキュメントツリーの構造に保存するため、XMLを一度にメモリに読み込むことになるため、これは不可能です。大規模な XML ファイルでは不可能です。だからこそ、スキャンおよび分析テクノロジー SAX が誕生しました。 回路図


SAX解析メカニズム

SAX

解析により、文書の読み取り時に文書を処理できるようになります。ドキュメントを操作する前に、ドキュメント全体がロードされるまで待つ必要はありません。


Javaでは、

DefaultHandlerインターフェースを継承することで、SAXパーサーを開発できます。 SAX の解析メカニズムは、どちらも特定のイベントがトリガーされるのを待ってから、対応するメソッドを呼び出します。

SAX

パーサーの最も一般的に使用される 5

イベント: 1startDocument()

: これは、SAX パーサーがドキュメントの先頭までスキャンすることをマークします。

2endDocument()、これは、SAXパーサーによってスキャンされたドキュメントの終了位置をマークします。

3startElement()SAXパーサーによってスキャンされた要素の開始タグを識別します。

4character()、これは、SAXパーサーが一部のテキストをスキャンしたことを示します。テキストはchar配列の形式で格納されていることに注意してください。

5endElement()SAXパーサーが要素の終了タグをスキャンしたことを示します。

イベントハンドラ共通メソッドパラメータリスト

public void startDocument()

public void startElement(String uri, String localName, String qName,Attributesattributes)

uri - 名前空間URI 、要素に名前空間 URI がない場合、または名前空間処理が実行されていない場合は、空の文字列。

localName - ローカル名 (プレフィックスなし)、または名前空間処理が実行されていない場合は空の文字列。

qName - 修飾名 (プレフィックス付き)、または修飾名が使用できない場合は空の文字列。

attributes - 要素に付加された属性。属性がない場合は、空の Attributes オブジェクトになります。

public voidcharacters(char[] ch, int start, int length)

ch - ドキュメントのすべての文字

start - 文字配列内の開始位置。

length - 文字配列から使用する文字の数。

public void endElement(String uri, String localName, String qName)

uri - 名前空間 URI、要素に名前空間 URI がない場合、または名前が存在しない場合スペース処理を実行している場合は空文字列となります。

localName - ローカル名 (プレフィックスなし)、または名前空間処理が実行されていない場合は空の文字列。

qName - 修飾名 (プレフィックス付き)、または修飾名が使用できない場合は空の文字列。

public void endDocument()

解析方法

パーサーとイベントハンドラーを併用することで、XMLドキュメントを解析することができます。 パーサーは、JAXPAPIを使用して作成できます。SAXパーサーを作成した後、特定のXMLドキュメントを解析するパーサーを指定できます。イベント ハンドラーはプログラマーによって作成され、イベント ハンドラー内のメソッドのパラメーターを通じて、プログラマーは sax パーサーによって解析されたデータを簡単に取得できるため、データの処理方法を決定できます。

解析ステップ

1では、SAXParserFactorynewInstance()メソッドを呼び出して、Saxパーサーファクトリーオブジェクトを取得します。

2Saxパーサーファクトリーオブジェクトを通じてnewSAXParser()メソッドを呼び出して、パーサーSAXParserオブジェクト

3を取得します。パーサーオブジェクトの parse パーサーをイベントハンドラーオブジェクトに関連付けるメソッド

ケース:

XML6。


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