保留xml中的特殊字符

use*_*907 6 c# xml linq-to-xml carriage-return linefeed

我有一个xml字符串存储在db表中,带有换行符.在我的C#3.5程序中,我使用Linq加载和操作它到xml,然后在UI表单的文本框控件中将其显示为字符串.

我需要缩进这个xml,并在UI中显示它时保留换行符/回车符.

能缩进它但是如何在xml中保留LF/CR字符?

这是示例C#代码:

    XElement rootNode = CreateRootNode();
    XElement testXmlNode = XElement.Parse(xmlFromDbWithLFChars);

    rootNode.Add(testXmlNode );

    var builder = new StringBuilder();
    var settings = new XmlWriterSettings()
    {
     Indent = true
    };

    using (var writer = XmlWriter.Create(builder, settings))
    {
     rootNode.WriteTo(writer);
    }
    xmlString  = builder.ToString();   

    xmlString = xmlString.Replace("
", Environment.NewLine); //Doesnt work

    xmlString = xmlString.Replace("
", Environment.NewLine);  //Doesnt work

//Heres how the xml should look like in the UI control:
 <TestNode
             name="xyz"
             Id="12">
             <Children>
                  <Child name="abc" location="p" />
             </Children>
    </TestNode>
Run Code Online (Sandbox Code Playgroud)

Alm*_*und 3

您想要做的是在 XmlWriter 上设置格式设置,因此更改您的行:

var settings = new XmlWriterSettings() 
    { 
     Indent = true 
    }; 
Run Code Online (Sandbox Code Playgroud)

对于这样的事情:

var settings = new XmlWriterSettings() 
    { 
     Indent = true,
     IndentChars = "\n",
     NewLineOnAttributes = true
    }; 
Run Code Online (Sandbox Code Playgroud)