Как создать объекты DOM, анализирующие XML со Stax

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

  •  26-09-2019
  •  | 
  •  

Вопрос

У меня есть некоторые трудности для анализа XML с помощью Stax, чтобы создать объекты org.w3c.dom.document для частей дерева XML.

Бывший.:
u003Croot>
u003Cchildren>
u003Cchild>ребенок 1.u003C/child>
u003Cchild>ребенок 2.u003C/child>
u003Cchild>ребенок 3u003C/child>
u003C/children>
u003C/root>
=> Я хотел бы создать 3 DOM объектов для каждогоu003Cchild> узел.

Я пытался сделать это, используя 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();

  • Тест 2, который бросает исключение Hierarchy_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)

Не могли бы вы мне помочь, пожалуйста ?

С наилучшими пожеланиями, Гийом ЛЕФЕБВР

Это было полезно?

Решение

Новый релиз Staxmate 2.0.1 (доступно в http://wiki.fasterxml.com/staxmateownload) решил эту проблему.

Спасибо, Стакман!

Другие советы

Проверьте это: http://jira.codehaus.org/browse/staxmate-39.... :-)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top