Java アプリケーションを使用してさまざまな XML ドキュメントを解析するための最良の方法を探しています。私は現在、SAX とカスタム コンテンツ ハンドラーを使用してこれを行っていますが、うまく機能します。
私は、現在 1 つの形式の XML ドキュメントを受け取り、さまざまな XML 要素の変更を加えた 2 つの追加の XML ドキュメント形式を受け取る、同じプログラムを持つオプションを検討することにしました。ドキュメントの最初の「startElement」に基づいて、ContentHandler を適切なものと交換したいと思っていましたが、ええと、ContentHandler が設定され、ドキュメントが解析されます。
... constructor ...
{
SAXParserFactory spf = SAXParserFactory.newInstance();
try {
SAXParser sp = spf.newSAXParser();
parser = sp.getXMLReader();
parser.setErrorHandler(new MyErrorHandler());
} catch (Exception e) {}
... parse StringBuffer ...
try {
parser.setContentHandler(pP);
parser.parse(new InputSource(new StringReader(xml.toString())));
return true;
} catch (IOException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
}
...
そのため、最初にできると思っていた方法でこれを行うことができるようには見えません。
そうは言っても、私はこれを完全に間違って見ていますか?複数の個別の XML ドキュメントを同じ XML 処理コードで解析する最適な方法は何ですか? 以前、もっと一般的な投稿で質問しようとしましたが、漠然としすぎていたと思います。これらの XML ドキュメントはかなり大きく、システムは数分ごとに約 1200 を受信するため、速度と効率のために DOM を実際に調べたことはありません。それはただの一方通行の情報発信です
この質問を長くしすぎて、混乱を招きます。以下は、単一の SAX、StAX、または ?? にしたいいくつかのさまざまな XML ドキュメントのモックアップです。パーサーはきれいに対処します。
製品.xml:
<products>
<product>
<id>1</id>
<name>Foo</name>
<product>
<id>2</id>
<name>bar</name>
</product>
</products>
store.xml:
<stores>
<store>
<id>1</id>
<name>S1A</name>
<location>CA</location>
</store>
<store>
<id>2</id>
<name>A1S</name>
<location>NY</location>
</store>
</stores>
manager.xml:
<managers>
<manager>
<id>1</id>
<name>Fen</name>
<store>1</store>
</manager>
<manager>
<id>2</id>
<name>Diz</name>
<store>2</store>
</manager>
</managers>