2

将 Word 2003 文档保存为 XML,然后再返回会导致文件大小减小,而且可能还有更多我不知道的内容。新文档与旧文档的 WordML 差异仅显示修订保存 ID 的差异。那么,往返中丢失了什么?

如果实际上什么都没有丢失,那么如何解释文件大小的几千字节呢?

4

4 回答 4

3

以下只是猜测。

.doc 文件实际上是OLE 结构化存储 复合文件。后者是一种以明确定义的方式将多个流打包到单个文档中的方法,其结构实际上非常接近文件中的文件系统——例如,它具有“扇区”和扇区分配表. 这种方法可以在不完全重写的情况下就地编辑文档文件。

但是,这种存储方法会导致一些冗余,例如未使用的扇区。当您往返文件时,您可以有效地从头开始重新创建它,因此消除了任何此类冗余存储伪像。

于 2009-07-11T01:38:27.730 回答
2

据我所知,除了 DOC 文件中的文本和格式之外,Word 还会存储一些信息,例如用户信息、文档历史记录中的一些内容等。这些信息在使用“文件 > 保存”时会累积。我想保存为 XML 并重新保存为 DOC 会删除该信息。

如果我没记错的话,因为简单的“另存为”已经减小了文件大小,而且我认为曾经有一些菜单项允许您保存一个比“文件>保存”版本小得多的 DOC 文件版本.

于 2009-07-03T07:03:40.380 回答
1

如果您在十六进制编辑器中查看 word 文档 (.doc),您会看到有很多很多的冗余零块。很好的格式,博士!

无论如何,保存到 XML 然后返回到 doc 可能会摆脱那些数千个零字节中的一些。

如果您真的很好奇,只需在十六进制编辑器中打开这两个文件并运行不同的算法,您可以尝试 Hex Workshop 和 Hex Editor Neo。

于 2009-07-05T05:59:16.567 回答
0

我对一些大型 Word 2003 文档的实验表明,将其保存为 XML,然后将其另存为 .doc,确实会导致文件稍微变小,但并不显着。正如您所指出的,rsidR 属性是不同的,但这并不能说明大小的减少,因为新的 rsidR 通常大小相同。

正如 Danra 指出的那样,.doc 文件具有相同的字节数。但是保存为 .doc 的较小文件也有这样的运行,所以我相信这是 .doc 二进制格式的产物,而不是携带信息的数据。我观察了一些往返的 .doc 文件,完全看不出外观上的差异,这支持了差异不包含信息的观点。

检查往返后创建的 XML 文件显示,主要区别在于转换为 XML 后没有删除内容的几个 rPr(运行属性)。由于 XML 删除了未使用的字符样式和属性,因此似乎可以节省。

于 2009-07-09T00:15:46.143 回答