0

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)

私を手伝ってくれますか ?

よろしく、ギヨーム・ルフェーブル

4

2 に答える 2

2

新しいStaxmateリリース2.0.1(http://wiki.fasterxml.com/StaxMateDownloadで入手可能)はこの問題を解決しました。

ありがとうStaxMan!

于 2010-11-25T10:16:51.660 に答える
0

これをチェックしてください:http://jira.codehaus.org/browse/STAXMATE-39 ... :-)

于 2010-11-19T06:02:59.927 に答える