【问题标题】:Can't invoke the protected method in StAXOMBuilder() class无法调用 StAXOMBuilder() 类中的受保护方法
【发布时间】:2013-09-27 06:12:51
【问题描述】:

我想在 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 Class 中作为受保护方法可用。但是在调用它时会出现错误“StAXOMBuilder 类型的方法 createDocument() 未定义”

如何解决这个问题?

【问题讨论】:

标签: java dom w3c axiom


【解决方案1】:

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

     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();

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 我已经导入了那个类 import org.apache.axiom.om.impl.builder.StAXOMBuilder;您是否建议扩展该课程?因为它也不起作用
      • 您正在导入它,它与您的课程不在同一个包中。扩展“StAXOMBuilder”类的唯一方法。
      • 我已经扩展了,但它告诉我们“StAXOMBuilder 类型的方法 createDocument() 不可见”
      • 它可能不受保护,而是私有的。这是 StAXOMBuilder.java 并且 createDocument() 是私有的。 svn.wso2.org/repos/wso2/branches/carbon/3.0.0/dependencies/…
      • people.apache.org/~veithen/axiom/apidocs/org/apache/axiom/om/… 说其他明智的。那是混乱。所以没有任何方法可以使用 Axiom 创建 w3c 文档。
      猜你喜欢
      • 2019-12-06
      • 2011-05-18
      • 2012-06-23
      • 2017-12-14
      • 2013-02-04
      • 2010-11-02
      • 1970-01-01
      • 1970-01-01
      • 2015-11-04
      相关资源
      最近更新 更多