在xml属性之间保留换行C#

时间:2019-04-29 06:16:02

标签: c# xml

我有一个由用户输入的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();               
 }

2 个答案:

答案 0 :(得分:0)

尝试查看设置。IndentChars。

select

答案 1 :(得分:0)

没有XML解析器会保留属性之间出现的精确空白。它只是化妆品。如果您有一个依赖正确使用空白的应用程序,则该应用程序已严重损坏,应该对其进行修复。

我们在StackOverflow上看到很多问题。

(a)我们看到人们在不使用XML解析器(通常使用正则表达式)的情况下阅读XML。不可避免地,这些人只能处理输入XML的格式完全符合他们的期望。

(b)然后我们看到人们试图生成XML格式,该XML的格式与(a)类中的某些人期望的一样。通常只能通过“手工格式化” XML来实现,而不是使用通用XML库来实现。

这些人没有了解XML的全部内容,而是要使用一种标准格式进行数据交换,以减少成本。