36

プッシュ解析アプローチでは、プッシュ パーサーは、ドキュメントが解析されるときに同期イベントを生成します。これらのイベントは、コールバック ハンドラー モデルを使用してアプリケーションで処理できます。

これは、 SAX 2.0 に関する書籍Pro XML Development with Javaに記載されているテキストです。

StAXに関しては、本は次のように述べています。

プル アプローチでは、イベントは、パーサーを使用するアプリケーションの制御下で XML ドキュメントからプルされます。

ハイライトされたテキストの意味を教えてください。初心者にふさわしい回答をいただければ幸いです:)

4

4 に答える 4

53

基本的に、プッシュとは、パーサーがハンドラーに「私は foo を持っています。それで何かをしてください」と言うときです。プルとは、ハンドラーがパーサーに「次の foo をくれ」と言ったときです。

押す:

if (myChar == '(')
    handler.handleOpenParen(); // push the open paren to the handler

引く:

Token token = parser.next(); // pull the next token from the parser
于 2013-04-09T06:57:15.353 に答える
11

プッシュ パーサー- イベントは、startDocument()、endDocument() などのコールバック関数の形式で API によって生成され、プログラマーの制御を超えています。私たちプログラマーはイベントを処理できますが、イベントの生成は制御できません。

プル パーサー- API を呼び出すと、イベントが生成されます。以下に例を示します。そのため、プログラマーはいつイベントを生成するかを決定できます。

   int eventType = xmlr.getEventType();
while(xmlr.hasNext()){
     eventType = xmlr.next();
     //Get all "Book" elements as XMLEvent object
     if(eventType == XMLStreamConstants.START_ELEMENT && 
         xmlr.getLocalName().equals("Book")){
        //get immutable XMLEvent
        StartElement event = getXMLEvent(xmlr).asStartElement();
        System.out.println("EVENT: " + event.toString());
     }
} 

、クライアントは、明示的に要求した場合にのみ XML データを取得 (プル) します。

プル解析では、クライアントがアプリケーション スレッドを制御し、必要に応じてパーサーでメソッドを呼び出すことができます。対照的に、プッシュ処理では、パーサーがアプリケーション スレッドを制御し、クライアントはパーサーからの呼び出しのみを受け入れることができます。

于 2013-04-09T06:55:38.530 に答える
5

プッシュ解析:パーサーが解析イベントをアプリケーションにプッシュする場所です。ほとんどの場合、コールバック メソッドを使用します。アプリケーションは、パーサー メソッドを呼び出した後に非同期で処理できるため、パーサーに時間がかかっても、その時点でアプリが停止することはありません。解析が完了するとすぐに、そのコールバック イベントを介してパーサーがアプリをトリガーし、アプリが解析結果をさらに続行できるようにします。

プル解析:解析イベントを待つのではなく、アプリがデータをプルするとき。アプリは、要件に応じて、1 つずつデータを取得できます。StAX と同様に、app は next() メソッドを繰り返し呼び出して、XML の次の構造を取得します。

于 2013-04-09T06:56:02.213 に答える