C# 为什么从XML文档读取时会得到\r\n\n等?

C# 为什么从XML文档读取时会得到\r\n\n等?,c#,xml,escaping,C#,Xml,Escaping,我知道这些是转义字符,但如何从XML文档中读取并忽略它们呢?顺便说一句,我使用的是XmlDocument。从文件中读取的字符串实际上不包含“\r\n”。那些是'\r'和'\n'分别表示回车符和换行符,它们一起构成换行符 但是,如果使用VS调试器查看字符串,则可能会看到转义序列而不是实际的换行符。发件人: 注意 在编译时,逐字字符串被转换为具有所有相同转义序列的普通字符串。因此,如果在“调试器监视”窗口中查看逐字记录字符串,您将看到编译器添加的转义字符,而不是源代码中的逐字记录版本。例如,逐字记录

我知道这些是转义字符,但如何从XML文档中读取并忽略它们呢?顺便说一句,我使用的是
XmlDocument

从文件中读取的字符串实际上不包含
“\r\n”
。那些是<代码>'\r'和
'\n'
分别表示回车符和换行符,它们一起构成换行符

但是,如果使用VS调试器查看字符串,则可能会看到转义序列而不是实际的换行符。发件人:

注意 在编译时,逐字字符串被转换为具有所有相同转义序列的普通字符串。因此,如果在“调试器监视”窗口中查看逐字记录字符串,您将看到编译器添加的转义字符,而不是源代码中的逐字记录版本。例如,逐字记录字符串
@“C:\files.txt”
将在监视窗口中显示为
“C:\\files.txt”

例如:

var mystring = "Hello\r\nWorld";

Console.Write(mystring);
输出:

Hello World
答案取决于你阅读文本文件的具体程度,以及你最终想要完成什么

下面是一个非常简单的解决方案:

StringBuilder sb = new StringBuilder();
using(var sr = new System.IO.StreamReader('path/to/your/file.txt'))
{
  while(true)
  {
     string line = sr.ReadLine();
     // if this is the final line, break out of the while look
     if(line == null)
        break;
     // append this line to the string builder
     sb.Append(line);
  }
  sr.Close();
}

// the sb instance hold all the text in the file, less the \r and \n characters
string textWithoutEndOfLineCharacters = sb.ToString();

您可以对文件内容执行字符串替换,如下所示:

string contents = File.ReadAllText('myfile.txt');
contents = contents.Replace('\n', '');

你在用什么看书?XML文档?XDocument?还有什么?这些是换行符。你所说的“忽略它们”是什么意思??请至少提供一点关于输入内容和期望结果的信息。@Martinho我正在使用XmlDocument@Frederic我不希望在读取包含它们的xml节点时设置变量时使用它们。我想要的是可读字符,而不是/r/n/t等…我看到我看到这是一个很好的响应,我想我忽略了一个事实,即这些字符只是可见的,因为我正在查看调试器。。。。。
string contents = File.ReadAllText('myfile.txt');
contents = contents.Replace('\n', '');