c# - 在 xml 中保留特殊字符

标签 c# xml linq-to-xml carriage-return linefeed

我在数据库表中存储了一个带有换行符的 xml 字符串。 在我的 C# 3.5 程序中,我使用 Linq to 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>

最佳答案

你想要做的是在 XmlWriter 上设置格式设置,所以改变你的行:

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

像这样:

var settings = new XmlWriterSettings() 
    { 
     Indent = true,
     IndentChars = "\n",
     NewLineOnAttributes = true
    }; 

关于c# - 在 xml 中保留特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4161557/

相关文章:

javascript - 为什么包装我的 JS SignalR 回调我的 $(function() 使其不被触发?

php - 使用 DOMDocument 在 XML 中附加 QBXML 声明

xml - 如何使用 LINQ to XML 包含 CData?

c#-4.0 - 将 header 添加到 XDocument 和架构

c# - Windows 7 操作系统中的服务不使用主机文件作为本地服务

C# 将对象转换为十进制

java - 解析 SOAP 响应返回 null

c# - linq 不会遍历列表

c# - 如何从 MVC4 中的另一个 Controller 向 API Controller 发出请求?

java - Hibernate 中的复合 id