このコードを使用して、StAX を使用して XML ファイルを作成する前に:
// Create a XMLOutputFactory
XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
// Create XMLEventWriter
XMLEventWriter eventWriter = outputFactory
.createXMLEventWriter(new FileOutputStream(behaviorsFilePath));
// Create a EventFactory
XMLEventFactory eventFactory = XMLEventFactory.newInstance();
XMLEvent end = eventFactory.createDTD("\n");
// Create and write Start Tag
StartDocument startDocument = eventFactory.createStartDocument();
eventWriter.add(startDocument);
eventWriter.add(end);
eventWriter.add(end);
// Create config open tag
StartElement configStartElement = eventFactory.createStartElement("",
"", ROOT);
//...
javax.xml.stream.XMLStreamException: Trying to write multiple DOCTYPE declarations
このコードは正常に機能していましたが、例外がスローされます。
アプリケーションをデバッグすると、2 回目の呼び出し時に例外がスローされることがわかります。eventWriter.add(end);
このコードが以前は機能していたのに、現在は機能していないのはなぜですか?
アップデート:
これが本当に重要かどうかはわかりませんが、このコードはSwingWorker
スレッドで実行されています...
問題になる可能性のある唯一の変更は、Axis2 Web サービスを使用するためにライブラリをプロジェクトに追加したことです (そのうちの 1 つは次のとおりですgeronimo-stax-api_1.0_spec-1.0.1.jar
)...そして、私はこれを見ました:
速度 - Axis2 は、独自のオブジェクト モデルと StAX (XML 用ストリーミング API) 解析を使用して、以前のバージョンの Apache Axis よりも大幅に高速化されています。
そしてこれ:
stax-api-1.0.1.jar (javax.xml.namespace.QName クラスを含む StAX API。この jar は、javax.xml.namespace.QName 実装を含む他の jar に置き換えることができます。ただし、Axis2 はこれを使用します。 Axis2 ディストリビューションにバンドルされている stax-api-1.0.1.jar のクラス)