1

内容を読み取ろうとしているzipファイルがありますが、。という名前のファイルを読み取る必要があるまで、すべてうまくいきました[Content_Types].xml。新しいURIを作成しようとすると、角かっこをURLに適したものに変換しようとします。その結果、ファイル名が一致しなくなります。

zipを読み取るために使用しています。System.IO.Packaging.Packageこれには、パッケージの一部を。で読み取ろうとするときにURIが必要package.GetPart()です。

パッケージからファイルを読み取るために角かっこをそのままにしておくURIを作成するにはどうすればよいですか?

ここで何をしようとしているのかを明確にするために、Office Open XMLファイル(.docx、.xlsx、.pptxなど)は実際には異なる拡張子のzipファイルです。これらの拡張子のいずれかのファイルの名前を.zipに変更すると、Officeファイル構造の内容を確認できます。すべてのOfficeOpenXMLファイルのルートに含まれているファイルの1つは、[Content_Types].xmlその特定のファイルを変更する必要があるというファイルです。

4

2 に答える 2

1

ブール値の dontEscape を受け入れるオーバーロードされた URI コンストラクターがあり、括弧がエスケープされるのを防ぐ必要があります。 同様の質問

更新された質問の再読に基づいて編集します。したがって、いくつかのグーグルから、 [Content_Types].xml は、zip ファイルを「zip パッケージ」に変換するファイルのように見えます。偶然にも、System.IO.Packaging.Packagezip パッケージでのみ動作します (通常の zip ファイルでは動作しません)。また、zip パッケージ (常に [Content_Types].xml を含む) のみを書き込みます。System.IO.Packaging.Package設計上、[Content_Types].xml を介して直接取得できるとは思いません。

于 2012-12-27T21:14:35.437 に答える
0

それは可能ではありません。

RFC 2396によると、[やなどの文字]は「賢明でない」カテゴリに分類されます。これは、ゲートウェイやその他のトランスポート エージェントがそれらを変更することが知られているためです。

それにもかかわらず、RFC 3986はこの件に関してもう少し明示的です。

バージョン 6 [RFC3513] 以降のインターネット プロトコル リテラル アドレスで識別されるホストは、IP リテラル を角括弧 ("[" および "]") で
囲むことによって区別されます。 これは、URI 構文で角括弧文字が許可される唯一の場所です。

したがって、角括弧を使用できる唯一の方法は、依存しているコードが RFC 仕様を満たしていない場合です。

package.GetParts()このメソッドを使用してパーツを繰り返し処理し、それらの URI を出力しようとするでしょう。それがあなたの特別なファイルに何を返すかを見るのは興味深いでしょう。

于 2012-12-27T21:39:48.703 に答える