如何将多行文本框的内容保存并加载到XML?

时间:2011-09-27 09:29:05

标签: c# textbox

我有一个多行文本框,我使用数据绑定将其Text属性绑定到一个字符串。这似乎有效,但是从XML加载字符串后,返回(新行)将丢失。当我检查XML时,返回就在那里,但是一旦从XML加载字符串,它们就会丢失。有谁知道为什么会这样,以及如何做到这一点。

(我不一定要使用多行文本框或字符串属性进行绑定,我只是一个可维护的(最好是优雅的)解决方案。)

编辑:基本上,我使用的是XmlSerializer类:

负载量:

using (StreamReader streamReader = new StreamReader(fileName))
{
    XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
    return (T)xmlSerializer.Deserialize(streamReader);
}

省电:

using (StreamWriter streamWriter = new StreamWriter(fileName))
{
   Type t = typeof(T);
   XmlSerializer xmlSerializer = new XmlSerializer(t);
   xmlSerializer.Serialize(streamWriter, data);
}

查看XML时,它会保存多行文本框数据,如下所示:

<OverriddenComponent>
   <overrideInformation>
          <Comments>first rule
second rule
third rule</Comments>
    </overrideInformation>
</OverriddenComponent>

但是在加载数据后,这些中断不再显示。

1 个答案:

答案 0 :(得分:1)

新线路的实际代码是什么? 0x0A或0x0D或两者兼而有之?我之前偶然发现了类似的问题。字符串中的字符“丢失”,因为文本框自己“转换”它们(或者不理解它们)。基本上,您的xml文件可能是单向编码的,并且您的文本框使用其他编码,或者在读取或写入文件本身时丢失(在读取/写入文件期间,您的字符串可能会“混乱”) )。因此,在您不知情的情况下,您的字符串可能有3个位置被篡改:

  1. 在写入文件期间(注意您使用的编码)
  2. 从文件中读取
  3. 在文本框中显示字符串时。
  4. 我的建议是,在将文件分配给绑定字符串之前,应将从文件中读取的文本分配给另一个字符串(未绑定),并使用调试器检查其更改方式。这个http://home2.paulschou.net/tools/xlate/是检查字符串中完全的有用工具。

    当我在我的应用程序中遇到此问题时,我最终使用二进制/十六进制字符值进行写入/读取,然后在需要显示时将其转换回来。但我不得不使用很多奇怪的ASCII代码。也许那里有一个更简单的解决方案。

    编辑:或者它可能只是一些与xml相关的东西。也许在将其写入xml时,你应该使用其他一些字符代替换行符吗?