我有两个文件:
文档 2 是通过转换过程传递文档 1 的结果,该过程使任何内容和格式保持不变(通过 Word 中的并排比较验证)。
但是,该过程会从 .docx 文件中删除许多 ID 号。
例如,
<w:pw:rsidP="00B600D6" w:rsidR="00F55D78" w:rsidRDefault="00B600D6">
变成
<w:p>
通过以下代码根据每个文档的转储:
正文 = ((Document)newerPackage.getMainDocumentPart().getJaxbElement()).getBody(); 节点 node = org.docx4j.XmlUtils.marshaltoW3CDomDocument(body).getDocumentElement(); TransformerFactory tf = TransformerFactory.newInstance(); 变压器变压器 = tf.newTransformer(); transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no"); transformer.setOutputProperty(OutputKeys.METHOD, "xml"); transformer.setOutputProperty(OutputKeys.INDENT, "是"); transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4"); transformer.transform(新 DOMSource(节点), 新的 StreamResult(新的 OutputStreamWriter(System.out, "UTF-8")));
使用此处推荐的 docx4j Differencer 比较方法,所有内容(除了没有应用格式的第一行)都显示为修改。
问题是:差异是由于缺少 id、格式还是其他原因造成的?
如果它很重要,我们在这种情况下使用 docx4j 对我们的往返过程执行自动健全性/回归测试(即应用“无损”过程并期望没有差异)