1

我想在 Axiom 中使用 StAXOMBuilder 类创建 w3c 文档。并且有一种方法可以用来完成该任务。

   OMElement documentElement = new StAXOMBuilder("resources/test.xml").getDocumentElement();
   XMLStreamReader llomReader = documentElement.getXMLStreamReader();
   OMFactory doomFactory = DOOMAbstractFactory.getOMFactory();
   StAXOMBuilder doomBuilder = new StAXOMBuilder(doomFactory, llomReader);

  Document doc = doomBuilder.createDocument(); 

createDocument 方法在STAXOMBuilder 类中作为受保护方法可用。但是当调用它时,它会给出错误“StAXOMBuilder 类型的方法 createDocument() 未定义”

如何解决这个问题?

4

3 回答 3

3

以下方法对我有用。感谢安德烈亚斯。

     OMMetaFactory omMetaFactory = OMAbstractFactory.getMetaFactory(OMAbstractFactory.FEATURE_DOM);
     OMFactory omFac = omMetaFactory.getOMFactory();
     OMXMLParserWrapper wrapper = OMXMLBuilderFactory.createOMBuilder(omFac, new FileInputStream("resources/test.xml")) ;
     Document doc = (Document) wrapper.getDocument();
于 2013-10-09T18:50:42.203 回答
1

使用 Axiom创建 DOMDocument实例的正确方法如下。首先,用于OMAbstractFactory#getMetaFactory(String)获取OMMetaFactory支持 DOM 的 Axiom 实现。您可以通过传递OMAbstractFactory.FEATURE_DOM给该方法来做到这一点。那么你有两种可能:

  1. 转换OMMetaFactoryDOMMetaFactory并使用该接口定义的 JAXP/DOM 兼容方法。
  2. 使用 Axiom API 创建一个OMDocument并将其转换为Document. 特别是,如果您要解析现有文档,请使用其中一种方法,该方法OMXMLBuilderFactory采用OMMetaFactoryorOMFactory参数,以便 Axiom 将使用之前检索到的 DOM 兼容实现。

请注意,DOOMAbstractFactory它已被弃用,并且被认为是不应直接使用StAXOMBuilder的内部实现类(正如包名所暗示的)。org.apache.axiom.om.impl.builder

于 2013-09-22T08:35:44.320 回答
1

为了能够调用类的protected方法,您的类应该是子类StAXOMBuilder或者在同一个包中。

于 2013-09-22T05:49:47.730 回答