4

docX ファイルをカスタムメイドの XML に変換しようとしています。私のユーザーは、Web アプリでのコンテンツ クエリを容易にするためにデータをこの XML に変換し、入力を docX から取得することを望んでいます。

Java でコンバーター API を探してみましたが、私の要件に合うものはないようです。docx4j を調べましたが、HTML と PDF にのみ変換されることに気付きました。入力できるコンバーター API、たとえば中間トランスレーター (XSLT) が存在し、出力が docX からのデータを備えたカスタム XML になるかどうかを考えています。

このための既存のツールはありますか?何もない場合、カスタム XML の前に最初に XSL-FO に変換するなど、openXML から独自のコンバーターをコーディングする際に取らなければならないアプローチに関する提案はありますか?

コミュニティからの連絡をお待ちしています。

どうもありがとうございました。

4

3 に答える 3

3

docx4j を使用して、XSLT を介して OpenXML を任意の XML に変換できます。

テンプレート xsltおよび javax.xml.transform.stream を想定しています。StreamResult resultの場合、次のようにします。

        WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(new java.io.File(inputfilepath));
        MainDocumentPart mdp = wordMLPackage.getMainDocumentPart();

        // DOM document to input to transform
        org.w3c.dom.Document doc = XmlUtils.marshaltoW3CDomDocument(
                mdp.getJaxbElement() );     

        XmlUtils.transform(doc, xslt, null, result);

ただし、XML に変換するだけなら、docx4j (および Apache POI) はやり過ぎです。OpenXML4Jを直接使用することもできます。

ただし、XSLT による変換が最善の方法であるかどうかは、対象の XML がドキュメント指向かデータ指向かによって異なります。

ドキュメント指向の場合、XSLT は優れたアプローチです。

データ指向の場合は、コンテンツ コントロールのデータ バインディングを検討することをお勧めします。(customxml と呼ばれる別のアプローチがありましたが、編集を Word に依存している場合、i4i 特許の茶番劇により、そのアプローチはお勧めできません)

于 2011-05-01T01:33:42.050 に答える
1

私の知る限り、docx ファイルは単純に ZIP コンテナー内の xml ファイルです。これらをデザインの XML 形式に変換するには、ファイルを (新しいフォルダーまたはメモリに) 解凍し、ターゲットの Xml ドキュメントを読み込み、XSLT をその xml ファイルに適用する必要があります。「docx4j」タグを除いて、開発環境については何も言及していないと思います..Javaで開発していますか?もしそうなら、残念ながら、zip 処理ライブラリと xml 変換ライブラリについてどのライブラリを参照すればよいかわかりません (ただし、それらが存在することは知っており、それらを見つけるのに 5 分間の Google 検索だけで済みます! )

docx 内の xml ファイルをチェックアウトするには、ファイルの拡張子を「.docx」から「.zip」に変更し、お気に入りの ZIP アーカイブ ツールで開くだけです。

于 2011-04-29T14:00:04.290 に答える
0

Wordから直接docxをhtmlとして保存するのが最も幸運でした。Html は xHtml ではないため、きちんと実行する必要があります。それ以外の場合、Word ベースのワークフローを使用する必要がある場合は、かなりうまく機能します。Word でファイルを開き、プログラムで Html に保存する VBA スクリプトを作成することもできます。

于 2011-04-29T15:28:49.723 に答える