我想在Axiom中使用StAXOMBuilder类创建w3c Document。并且有一种方法可用于实现该任务。
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 Class中可用作受保护的方法。但是在调用它时会给出错误“方法createDocument()未定义类型StAXOMBuilder”
如何解决这个问题?
答案 0 :(得分:3)
以下方法适合我。感谢Andreas。
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();
答案 1 :(得分:1)
为了能够调用类的protected
方法,您的类应该是StAXOMBuilder
的子类或者在同一个包中。
答案 2 :(得分:1)
使用Axiom创建DOM Document
实例的正确方法如下。首先,使用OMAbstractFactory#getMetaFactory(String)
为支持DOM的Axiom实现获取OMMetaFactory
。您可以通过将OMAbstractFactory.FEATURE_DOM
传递给该方法来实现。然后你有两种可能性:
OMMetaFactory
转换为DOMMetaFactory
并使用该接口定义的JAXP / DOM兼容方法。OMDocument
并将其投射到Document
。特别是,如果要解析现有文档,请使用OMXMLBuilderFactory
中带有OMMetaFactory
或OMFactory
参数的方法之一,以便Axiom使用先前检索到的DOM兼容实现。 请注意,DOOMAbstractFactory
已被弃用,StAXOMBuilder
被视为内部实现类(如包名org.apache.axiom.om.impl.builder
所暗示的那样),不应直接使用。