繁体   English   中英

如何使用Stax创建解析XML的Dom对象

[英]How to create Dom objects parsing an XML with Stax

我使用Stax解析XML以便为XML树的某些部分创建org.w3c.dom.Document对象时遇到一些困难。

例:
<根>
<孩子>
<child> child 1 </ child>
<child> child 2 </ child>
<child> child 3 </ child>
</孩子>
</根>
=>我想为每个<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();

  • 测试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)

请问你能帮帮我吗 ?

此致,Guillaume LEFEBVRE

新的Staxmate版本2.0.1(可从http://wiki.fasterxml.com/StaxMateDownload获得 )解决了这个问题。

谢谢StaxMan!

看看这个: http : //jira.codehaus.org/browse/STAXMATE-39 ... :-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM