Как создавать Dom-объекты, анализирующие XML с помощью Stax - PullRequest
0 голосов
/ 18 ноября 2010

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

Ex .:


ребенок 1
ребенок 2
ребенок 3


=> Я хотел бы создать 3 объекта DOM для каждого узла .

Я пытался сделать это с помощью Staxmate и DomConverter, но у меня проблема ...

Мой тестовый проект зависит только от:

  • stax2-апи-3.0.3.jar
  • staxmate-2.0.0.jar
  • JDK 1.6.0_21

2 теста:

  • Тест 1, который отлично работает

<code>
    FileInputStream in = new FileInputStream("demo.xml");
    XMLStreamReader sr = XMLInputFactory.newInstance().createXMLStreamReader(in);
    Document doc = new DOMConverter().buildDocument(sr);
    in.close();
  • Тест 2, который выдает исключение HIERARCHY_REQUEST_ERR:

<code>
    FileInputStream in = new FileInputStream("demo.xml");
    XMLStreamReader sr = XMLInputFactory.newInstance().createXMLStreamReader(in);
    while (sr.hasNext()) {<br>
      sr.next();
      switch (sr.getEventType()) {
        case XMLStreamReader.START_ELEMENT:
          Document doc = new DOMConverter().buildDocument(sr);
      }
    }
    in.close();

<code>
    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)

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

С уважением, Гийом Лефевр

Ответы [ 2 ]

2 голосов
/ 25 ноября 2010

Новая версия Staxmate 2.0.1 (доступна по адресу http://wiki.fasterxml.com/StaxMateDownload), решает эту проблему.

Спасибо, StaxMan!

0 голосов
/ 19 ноября 2010

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

...