Pergunta

Tenho algumas dificuldades para analisar um XML usando Stax para criar objetos org.w3c.dom.document para partes da árvore XML.

Ex.:
u003Croot>
u003Cchildren>
u003Cchild>Criança 1u003C/child>
u003Cchild>Criança 2u003C/child>
u003Cchild>Criança 3u003C/child>
u003C/children>
u003C/root>
=> Eu gostaria de criar 3 objetos DOM para cadau003Cchild> nó.

Eu tentei fazer isso usando Staxmate e DomConverter, mas tenho um problema ...

Meu projeto de teste depende apenas de:

  • Stax2-api-3.0.3.Jar
  • Staxmate-2.0.0.jar
  • JDK 1.6.0_21

2 testes:

  • Teste 1 que funciona perfeitamente


    FileInputStream in = new FileInputStream("demo.xml");
    XMLStreamReader sr = XMLInputFactory.newInstance().createXMLStreamReader(in);
    Document doc = new DOMConverter().buildDocument(sr);
    in.close();

  • Teste 2 que lança uma exceção hierarquia_request_err:


    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)

Você poderia me ajudar por favor ?

Atenciosamente, Guillaume Lefebvre

Foi útil?

Solução

Novo Staxmate Release 2.0.1 (disponível em http://wiki.fasterxml.com/staxmatetownload) resolveu esse problema.

Obrigado Staxman!

Outras dicas

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top