1

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 クラスで使用できます。しかし、呼び出されると、「メソッド createDocument() はタイプ StAXOMBuilder に対して未定義です」というエラーが表示されます。

これを修正する方法は?

4

3 に答える 3

3

次の方法は私にとってはうまくいきました。アンドレアスに感謝します。

     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();
于 2013-10-09T18:50:42.203 に答える
1

クラスのメソッドを呼び出せるようにするprotectedには、クラスをサブクラス化するStAXOMBuilderか、同じパッケージに含める必要があります。

于 2013-09-22T05:49:47.730 に答える
1

DocumentAxiom でDOM インスタンスを作成する正しい方法は次のとおりです。まず、DOM をサポートする Axiom 実装のOMAbstractFactory#getMetaFactory(String)を取得するために使用します。そのメソッドOMMetaFactoryに渡すことでそれを行います。OMAbstractFactory.FEATURE_DOM次に、2 つの可能性があります。

  1. をキャストしOMMetaFactoryDOMMetaFactory、そのインターフェースで定義された JAXP/DOM 互換メソッドを使用します。
  2. Axiom API を使用して を作成し、OMDocumentそれを にキャストしDocumentます。特に、既存の文書を解析したい場合は、 or引数OMXMLBuilderFactoryを取る のいずれかのメソッドを使用して、Axiom が以前に取得した DOM 互換の実装を使用するようにします。OMMetaFactoryOMFactory

DOOMAbstractFactoryは非推奨であり、StAXOMBuilder(パッケージ名が示すように) 内部実装クラスと見なされ、org.apache.axiom.om.impl.builder直接使用してはならないことに注意してください。

于 2013-09-22T08:35:44.320 に答える