[英]Can't invoke the protected method in StAXOMBuilder() class
我想使用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();
在STAXOMBuilder類中可以使用createDocument方法作為受保護的方法。 但是,當調用它時會出現錯誤“對於類型為StAXOMBuilder的方法createDocument()未定義”
如何解決這個問題?
以下方法對我有用。 感謝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();
為了能夠調用類的protected
方法,您的類應該是StAXOMBuilder
子類,或者應位於同一包中。
使用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
將StAXOMBuilder
視為內部實現類(如包名稱org.apache.axiom.om.impl.builder
所暗示),不應直接使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.