1

こんにちは、xml をファイルに保存しようとしていますが、ファイルの先頭に別の文字が追加され続けています。

私が持っているコードは

string strCXML2;

strCXML2 = "<input type=" + "\"" + "hidden" + "\"" + " name=" + "\"" + "cxml-urlencoded" + "\"" + " value=" + "\"";
strCXML2 = strCXML2 + "<!DOCTYPE cXML SYSTEM " + "\"" + "http://xml.cxml.org/schemas/cXML/1.2.023/cXML.dtd" + "\"" + ">";

//<snip>

BinaryWriter bw5 = new BinaryWriter(File.Open(Server.MapPath("~/data/test/test19.xml"), FileMode.OpenOrCreate))   
bw5.Write(strCXML2); 
bw5.Close();

これは、他のジャンク文字であるたびに、開始時にxml "}"で次のファイルを返します

}<input type="hidden" name="cxml-urlencoded" value="<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.023/cXML.dtd">

なぜこれをやっているのですか?

4

2 に答える 2

8

書き込んでいる文字は、文字列のエンコードされた長さです。これは、テキスト ファイルを書き込むことを想定していないためです。BinaryWriter書き込みます...バイナリ。で読み取ることができるエンコードされたバイナリ形式で文字列を書き込んでいますBinaryReader.ReadString

代わりに、次のものを使用してください。

File.WriteAllText(path, strCXML2);

メソッドのドキュメントでは、これらBinaryWriter.Write(string)すべてについて説明しています。

長さがプレフィックスされた文字列は、その文字列の長さを含む単一のバイトまたは単語を文字列にプレフィックスとして付けることによって、文字列の長さを表します。このメソッドは、最初に文字列の長さを UTF-7 でエンコードされた符号なし整数として書き込み、次に BinaryWriter インスタンスの現在のエンコーディングを使用して、その数の文字をストリームに書き込みます。

また、テキストファイルの作成に関する別のセクションへのリンクも便利です。

于 2012-10-15T05:55:23.347 に答える