假设我有一个简单的类,其中只有一个成员是字符串.
public class Abc
{
private String text;
public String Text
{
get { return this.text; }
set { this.text = value; }
}
}
现在,当我使用有问题的XmlSerializer序列化然后反序列化它时,任何包含换行符(“\r\n”或Environment.NewLine)的文本都将转换为“\n”。
我如何保留换行符?
5条答案
按热度按时间ubby3x7f1#
正在删除CR的不是XmlSerializer,而是XmlWriter。若要保留它,必须让编写器将CR转换为其字符实体
。这与DataContractSerializer完全相同:
我们为什么要这么做
这是因为兼容的XML解析器必须在解析之前将CRLF和任何不跟LF的CR转换为单个LF。此行为在XML 1.0规范的行尾处理部分中定义。
由于这是在解析之前发生的,所以如果希望CR存在于文档中,就需要将CR编码为它的字符实体。
nnsrf1az2#
sh7euo9m3#
nzrxty8p4#
使用此代码:
8aqjt8rx5#
好办法,拉克伦·罗奇!
下面的函数(在VB .NET中)使用
StringWriter
返回String,而不是使用XmlWriter
将结果写入文件。