XML用の単純なAPI
、はインターフェイスでもあり、ソフトウェア パッケージでもあります。これは、XML 解析の代替手段です。 SAX は DOM の解析とは異なり、文書を 1 行ずつスキャンし、スキャン中に解析します。アプリケーションは読み取られたデータのみをチェックするため、データをメモリに保存する必要がなく、これは大きなドキュメントを解析する場合に大きな利点となります。 SAX は、XML
を処理するためのイベント駆動型の「プッシュ」モデルです。W3C 標準ではありませんが、広く認識されている API です。 SAXパーサーは、DOMのような完全なドキュメントツリーを構築しませんが、代わりに、ドキュメントが読み取られるときに一連のイベントをアクティブ化し、イベントハンドラーにプッシュされ、ドキュメントコンテンツへのアクセスを提供します。 PS:
SAXは、XMLファイルを変更、削除、追加することはできません。 なぜSAX
テクノロジーを導入するのですか?
解析ソリューションです。なぜ SAX テクノロジーがまだ登場しているのですか?理由は非常に単純で、DOMはXMLをドキュメントツリーの構造に保存するため、XMLを一度にメモリに読み込むことになるため、これは不可能です。大規模な XML ファイルでは不可能です。だからこそ、スキャンおよび分析テクノロジー SAX が誕生しました。 回路図
SAX解析メカニズム
Javaでは、
DefaultHandlerインターフェースを継承することで、SAXパーサーを開発できます。 SAX の解析メカニズムは、どちらも特定のイベントがトリガーされるのを待ってから、対応するメソッドを呼び出します。
SAXパーサーの最も一般的に使用される 5
イベント: 1、startDocument()
: これは、SAX パーサーがドキュメントの先頭までスキャンすることをマークします。
2、endDocument()、これは、SAXパーサーによってスキャンされたドキュメントの終了位置をマークします。
3、startElement()、SAXパーサーによってスキャンされた要素の開始タグを識別します。
4、character()、これは、SAXパーサーが一部のテキストをスキャンしたことを示します。テキストはchar配列の形式で格納されていることに注意してください。
5、endElement()、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ドキュメントを解析することができます。 パーサーは、JAXPのAPIを使用して作成できます。SAXパーサーを作成した後、特定のXMLドキュメントを解析するパーサーを指定できます。イベント ハンドラーはプログラマーによって作成され、イベント ハンドラー内のメソッドのパラメーターを通じて、プログラマーは sax パーサーによって解析されたデータを簡単に取得できるため、データの処理方法を決定できます。
解析ステップ
1では、SAXParserFactoryのnewInstance()メソッドを呼び出して、Saxパーサーファクトリーオブジェクトを取得します。
2、Saxパーサーファクトリーオブジェクトを通じてnewSAXParser()メソッドを呼び出して、パーサーSAXParserオブジェクト
3を取得します。パーサーオブジェクトの parse パーサーをイベントハンドラーオブジェクトに関連付けるメソッド
ケース:
XML6。