簡體   English   中英

無法在StAXOMBuilder()類中調用受保護的方法

[英]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傳遞給該方法來實現。 然后,您有兩種可能性:

  1. OMMetaFactoryDOMMetaFactory並使用該接口定義的JAXP / DOM兼容方法。
  2. 使用Axiom API創建OMDocument並將其轉換為Document 特別是,如果要解析現有文檔,請使用OMXMLBuilderFactory中帶有OMMetaFactoryOMFactory參數的方法之一,以便Axiom將使用之前檢索的DOM兼容實現。

請注意,不贊成使用DOOMAbstractFactory ,並且StAXOMBuilderStAXOMBuilder視為內部實現類(如包名稱org.apache.axiom.om.impl.builder所暗示),不應直接使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM