Stax を使用して XML を解析して Dom オブジェクトを作成する方法

StackOverflow https://stackoverflow.com/questions/4217275

  •  26-09-2019
  •  | 
  •  

質問

XML ツリーの一部の org.w3c.dom.Document オブジェクトを作成するために、Stax を使用して XML を解析するのにいくつかの困難があります。

元。:
<ルート>
<子供たち>
<子>子 1</子>
<子>子 2</子>
<子>子 3</子>
</子供>
</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)

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

よろしく、Guillaume Lefebvre

役に立ちましたか?

解決

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

ありがとうスタックスマン!

他のヒント

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top