1

Sun のCursor-to-Event ExampleStAX for Java EE 5 を使用してXML を解析する推奨される方法に従おうとしています。Cursor API を介して XML を走査し、必要に応じて を使用してを割り当てる必要があります。XMLEventXMLEventAllocator


厄介なことに、sun 自身の例はコンパイルされません (少なくとも JDK 1.6 では、1.5 コードに準拠していても)。この例では、アロケータを 経由newでインスタンス化しようとしていますが、JDK の対応する実装クラスには外部からアクセスできません。


JavaDocs を読んで Web を検索した後、文字通り何も見つかりませんでした。


インターフェースをゼロから実装することもできXMLEventAllocatorますが、完全に優れた実装が JDK にある場合は、専門家でないと正しく実装するのがStAX難しいだけでなく、本当に間違っているように思えます。

4

2 に答える 2

2

カーソル API を直接使用するという Blaise の提案を支持する以外に、Event API を使用したい場合でも、カスタムXMLEventAllocation実装を定義する必要はまったくありません。必要に応じてそれを行うこともできますが (Even オブジェクトと一緒に渡されるデータを追加するなど)、高度な手法になります。

したがって、イベント API を使用する場合は、次のように XMLInputFactory に XMLEventReader を生成するように依頼します。

XMLEventReader reader = XMLInputFactory.newInstance().createXMLEventReader(new FileInputStream("file.xml"));

または XMLStreamReader がある場合:

XMLEventReader reader = XMLInputFactory.newInstance().createXMLEventReader(streamReader);

そして、それはあなたがする必要があるすべてです。

少年、なぜチュートリアルにそのばかげた小さなコードがあるのか​​ わかりません-それはまったく意味がありません. :-)

于 2011-01-06T00:28:31.313 に答える
2

この例を、StAX を使用するためのベスト プラクティスとして使用するつもりはありません。StAX には、XMLStreamReader と XMLEventReader の 2 つのアプローチがあります。どちらも、XML ドキュメントの深さ優先トラバーサルのイベントにアクセスするための API を提供します。XMLStream リーダーを使用すると、イベント タイプに基づいて XMLStreamReader から情報を要求できます。また、XMLEventReader を使用すると、元のイベントを表すオブジェクトが提供されます。

XMLStreamReader API を直接使用することをお勧めします。

于 2010-12-23T17:50:07.970 に答える