嗨,我正在尝试将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();
Run Code Online (Sandbox Code Playgroud)
每次在某个其他垃圾角色时,它会在xml"}"中返回以下文件
}<input type="hidden" name="cxml-urlencoded" value="<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.023/cXML.dtd">
Run Code Online (Sandbox Code Playgroud)
任何想法为什么这样做?
它所写的字符是字符串的编码长度,因为:它不期望写一个文本文件.BinaryWriter写... 二进制.它以编码的二进制方式写入字符串,它可以回读BinaryReader.ReadString.
相反,只使用:
File.WriteAllText(path, strCXML2);
Run Code Online (Sandbox Code Playgroud)
该BinaryWriter.Write(string)方法的文档解释了所有这些:
带长字符的字符串表示字符串长度,方法是在字符串前面加上包含该字符串长度的单个字节或单词.此方法首先将字符串的长度写为UTF-7编码的无符号整数,然后使用BinaryWriter实例的当前编码将该多个字符写入流中.