2009-07-03 6 views
2

Word 2003文書をXMLに保存してから元のサイズに戻すと、ファイルサイズが小さくなります。新しい文書のWordML上の差分は、古い文書との差異はrevision save ID'sにのみ表示されます。だから、roundtripで何が失われていますか?Word 2003文書に対する "XML Roundtrip"の効果は何ですか?

実際に何も失われていない場合は、ファイルのサイズから数千バイト分をどうやって説明しますか?

答えて

2

私が知っている限り、WordはDOCファイルにテキストや書式のほかにいくつかの情報を保存しています。たとえば、ユーザー情報、ドキュメント履歴の一部などです。この情報は「ファイル>保存」を使用すると蓄積されます。私は、XMLとして保存し、DOCとしてその情報を取り除くと思います。

私が正しく思い出したのは、単純に「名前を付けて保存」でファイルサイズが縮小されていて、以前は「ファイル」サイズよりもかなり小さいバージョンのDOCファイルを保存できるメニューアイテムがあったと思います>保存 "バージョン。

1

16進エディタでワードドキュメント(.doc)を見ると、冗長ゼロブロックが多数存在することがわかります。素晴らしいフォーマット、doc!

とにかく、XMLに保存してからdocに戻っても、数千バイトのゼロバイトを取り除く可能性があります。

もしあなたが本当に興味があるのであれば、両方のファイルを16進エディタで開き、差分アルゴリズムを実行すると、Hex WorkshopとHex Editor Neoを試すことができます。

0

大規模なWord 2003文書をいくつか試してみたところ、XMLとして保存してから.docとして保存すると、実際にはそれほど大きくはありませんが、やや小さくなっています。あなたが指摘しているように、rsidRの属性は異なりますが、新しいrsidRが通常は同じサイズなので、サイズの縮小は考慮されません。

Danraは指摘しているように、.docファイルは同じバイトで実行されます。しかし、.docとして保存された小さいファイルもこのような実行を持っているので、これは.docバイナリ形式の情報であり、情報を運ぶデータではないと考えています。ラウンドトリップされた.docファイルのいくつかを目の当たりにして、外観の違いは全く見られず、その違いが情報伝達ではないという考えを裏付けました。

ラウンドトリップ後に作成されたXMLファイルを調べると、主な違いは、XMLに変換した後にいくつかのrPr(実行プロパティ)がコンテンツなしで削除されることです。 XMLは未使用の文字スタイルとプロパティを削除するので、保存されているようです。

3

次は単なる推測です。

.docファイルは実際にはOLE structured storagecompound fileです。後者は、単一のドキュメントに複数のストリームを明確に定義する方法であり、実際にはファイルシステム内のファイルシステムに非常に近いものです。たとえば、「セクタ」とセクタアロケーションテーブル。このようなアプローチにより、文書ファイルを完全に書き換えずにその場で編集することが可能になる。

しかし、このストレージ手法では、未使用セクタなどの冗長性があります。ファイルをラウンドトリップすると、ファイルを最初から効果的に再作成するので、そのような冗長なストレージアーチファクトは排除されます。

+0

私はここであなたの答えが目標であると信じています - 私は "バイナリダスト"と呼ばれる冗長性を聞いたことがあります。私はあなたの答えが効果的にファイル上の "往復"が何を意味するものなのかと思います:冗長性を排除します。 これら2つのリンクも認識してくれてありがとう。 – JohnZaj

+0

はい、「高速保存」機能を参照してください:http://support.microsoft.com/kb/197978 – JasonPlutext

関連する問題