XMLツリーの一部のorg.w3c.dom.Documentオブジェクトを作成するために、Staxを使用してXMLを解析するのにいくつかの問題があります。
例:
<root>
<children>
<child> child 1 </ child>
<child> child 2 </ child>
<child> child 3 </ child>
</ children>
</ root>
=> <child>ノードごとに3つのDOMオブジェクトを作成します。
StaxmateとDomConverterを使用してこれを実行しようとしましたが、問題があります...
私のテストプロジェクトは以下にのみ依存しています:
- stax2-api-3.0.3.jar
- staxmate-2.0.0.jar
- jdk 1.6.0_21
2つのテスト:
- 完全に機能するテスト1
FileInputStream in = new FileInputStream("demo.xml");
XMLStreamReader sr = XMLInputFactory.newInstance().createXMLStreamReader(in);
Document doc = new DOMConverter().buildDocument(sr);
in.close();
- HIERARCHY_REQUEST_ERR例外をスローするテスト2:
FileInputStream in = new FileInputStream("demo.xml");
XMLStreamReader sr = XMLInputFactory.newInstance().createXMLStreamReader(in);
while (sr.hasNext()) {
sr.next();
switch (sr.getEventType()) {
case XMLStreamReader.START_ELEMENT:
Document doc = new DOMConverter().buildDocument(sr);
}
}
in.close();
org.w3c.dom.DOMException: HIERARCHY_REQUEST_ERR: An attempt was made to insert a node where it is not permitted.
at com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl.insertBefore(CoreDocumentImpl.java:391)
at com.sun.org.apache.xerces.internal.dom.NodeImpl.appendChild(NodeImpl.java:235)
at org.codehaus.staxmate.dom.DOMConverter._build(DOMConverter.java:292)
at org.codehaus.staxmate.dom.DOMConverter.buildDocument(DOMConverter.java:171)
at org.codehaus.staxmate.dom.DOMConverter.buildDocument(DOMConverter.java:152)
at org.codehaus.staxmate.dom.DOMConverter.buildDocument(DOMConverter.java:131)
at com.staxmatetest.Main.main(Main.java:22)
私を手伝ってくれますか ?
よろしく、ギヨーム・ルフェーブル