Java Can';t在statxombuilder()类中调用受保护的方法
我想使用Axiom中的StatxonBuilder类创建w3c文档。有一种方法可以用来完成这项任务Java Can';t在statxombuilder()类中调用受保护的方法,java,dom,w3c,axiom,Java,Dom,W3c,Axiom,我想使用Axiom中的StatxonBuilder类创建w3c文档。有一种方法可以用来完成这项任务 OMElement documentElement = new StAXOMBuilder("resources/test.xml").getDocumentElement(); XMLStreamReader llomReader = documentElement.getXMLStreamReader(); OMFactory doomFactory = DOOMAbstra
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方法作为受保护的方法在中可用。但是,当调用时,它会给出错误“类型statxonbuilder的方法createDocument()未定义”
如何解决此问题?要能够调用类的
受保护的方法,您的类应该是statxombuilder的子类或位于同一个包中。要能够调用类的受保护的方法,您的类应该是statxombuilder的子类或在同一个包中。使用Axiom创建DOM文档
实例的正确方法如下。首先,使用OMAbstractFactory#getMetaFactory(String)
为支持DOM的Axiom实现获取OMMetaFactory
。您可以通过向该方法传递OMAbstractFactory.FEATURE\u DOM
来实现这一点。然后,您有两种可能性:
将OMMetaFactory
强制转换为doMetafactory
,并使用该接口定义的JAXP/DOM兼容方法
使用Axiom API创建OMDocument
并将其转换为文档
。特别是,如果要解析现有文档,请使用OMXMLBuilderFactory
中的方法之一,该方法接受OMMetaFactory
或OMFactory
参数,以便Axiom将使用前面检索到的DOM兼容实现
请注意,DOOMAbstractFactory
已被弃用,StAXOMBuilder
被视为一个内部实现类(正如包名org.apache.axiom.om.impl.builder
所暗示的那样),不应直接使用。首先,使用OMAbstractFactory#getMetaFactory(String)
为支持DOM的Axiom实现获取OMMetaFactory
。您可以通过向该方法传递OMAbstractFactory.FEATURE\u DOM
来实现这一点。然后,您有两种可能性:
将OMMetaFactory
强制转换为doMetafactory
,并使用该接口定义的JAXP/DOM兼容方法
使用Axiom API创建OMDocument
并将其转换为文档
。特别是,如果要解析现有文档,请使用OMXMLBuilderFactory
中的方法之一,该方法接受OMMetaFactory
或OMFactory
参数,以便Axiom将使用前面检索到的DOM兼容实现
请注意,DOOMAbstractFactory
已被弃用,StAXOMBuilder
被视为一个内部实现类(正如包名org.apache.axiom.om.impl.builder
所暗示的那样),不应直接使用。多亏了安德烈亚斯
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();
下面的方法对我有效。多亏了安德烈亚斯
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();
我已经导入了这个类import org.apache.axiom.om.impl.builder.StatxonBuilder;你是在建议扩大这门课吗?因为导入时它不起作用,所以它与类不在同一个包中。扩展“StaxonBuilder”类的唯一方法。我已经扩展了,但它表明“StaxonBuilder类型的方法createDocument()不可见”,它可能不受保护,但是私有的。这是statxombuilder.java,createDocument()是私有的。另一位智者说。这就是困惑。因此,没有任何方法可以使用Axiom创建w3c文档;你是在建议扩大这门课吗?因为导入时它不起作用,所以它与类不在同一个包中。扩展“StaxonBuilder”类的唯一方法。我已经扩展了,但它表明“StaxonBuilder类型的方法createDocument()不可见”,它可能不受保护,但是私有的。这是statxombuilder.java,createDocument()是私有的。另一位智者说。这就是困惑。因此,没有任何方法可以使用Axiom创建w3c文档。请确保您没有将createDocument()键入为createDocument()。似乎甚至说createDocument是受保护的,而不是私有的,这也暗示了其他方面。在类StAXOMBuilder的实现中,createDocument方法被声明为private请确保您没有将createDocument()键入为createDocument(),甚至说createDocument是受保护的而非private也表明了另一种观点。在类StaxonBuilder的实现中,createDocument方法被声明为私有