私は2つの文書を持っています:
ドキュメント 2 は、ドキュメント 1 を変換プロセスに通した結果であり、コンテンツとフォーマットはそのまま残されます (Word で並べて比較することによって検証されます)。
ただし、このプロセスでは、.docx ファイルから多くの ID 番号が削除されます。
例えば、
<w:pw:rsidP="00B600D6" w:rsidR="00F55D78" w:rsidRDefault="00B600D6">
になる
<w:p>
次のコードを介した各ドキュメントのダンプによると:
本文 body = ((Document)newerPackage.getMainDocumentPart().getJaxbElement()).getBody(); ノード node = org.docx4j.XmlUtils.marshaltoW3CDomDocument(body).getDocumentElement(); TransformerFactory tf = TransformerFactory.newInstance(); トランスフォーマー トランスフォーマー = tf.newTransformer(); トランスフォーマー.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "いいえ"); トランスフォーマー.setOutputProperty(OutputKeys.METHOD, "xml"); トランスフォーマー.setOutputProperty(OutputKeys.INDENT, "はい"); トランスフォーマー.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); トランスフォーマー.setOutputProperty("{http://xml.apache.org/xslt}インデント量", "4"); トランスフォーマー.トランスフォーム(新しい DOMSource(ノード), 新しい StreamResult(新しい OutputStreamWriter(System.out, "UTF-8")));
ここで推奨されている docx4j Differencer 比較方法を使用すると、すべて (フォーマットが適用されていない最初の行を除く) が変更として表示されます。
質問: 差分は、欠落している ID、フォーマット、またはその他の結果ですか?
重要な場合は、このコンテキストで docx4j を使用して、ラウンドトリップ プロセスで自動化された健全性/回帰テストを実行します (つまり、「ロスレス」プロセスを適用し、違いがないことを期待します)。