首页 > 解决方案 > 在xml属性之间保留新行C#

问题描述

我有一个由用户输入的 XML,我必须向它添加一些属性,然后将更改的 XML 作为字符串返回。

现在的问题是,它忽略了属性之间的退格。这是我正在谈论的一个例子:

我得到的 XML:

<note day="12" 
      month="11"
      year="2002"
      to="Tove"
      from="Jani" 
      heading="Reminder">
</note>

我要返回的 XML:

<note day="12" 
      month="11"
      year="2002"
      to="Tove"
      from="Jani" 
      heading="Reminder"
      body="Don't forget me this weekend!">
</note>

实际返回的 XML:

<note day="12" month="11" year="2002" to="Tove" from="Jani" heading="Reminder" body="Don't forget me this weekend!">
</note>

下面是如何将 xmlContent(用户定义的 XML 作为字符串)加载到 XmlDocument 类中的代码。

        XmlDocument xmlDocument= new XmlDocument();
        xmlDocument.PreserveWhitespace = true;
        xmlDocument.LoadXml(xmlContent);

但是 XmlDocument.PreserveWhitespace 在用新行分隔属性时似乎不起作用。

为了从 XmlDocument 创建字符串,我使用以下代码:

 using (var sw = new StringWriter())
 {
     using (var xw = XmlWriter.Create(sw, settings))
     {
        xw.WriteString(xmlDocument.InnerXml);
     }
     string stringToOutput = sw.ToString();               
 }

标签: c#xml

解决方案


尝试查看 settings.IndentChars。

var settings = new XmlWriterSettings() 
{
    IndentChars = "\r\n"
}

推荐阅读