我有一个由用户输入的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();
}
答案 0 :(得分:0)
尝试查看设置。IndentChars。
select
答案 1 :(得分:0)
没有XML解析器会保留属性之间出现的精确空白。它只是化妆品。如果您有一个依赖正确使用空白的应用程序,则该应用程序已严重损坏,应该对其进行修复。
我们在StackOverflow上看到很多问题。
(a)我们看到人们在不使用XML解析器(通常使用正则表达式)的情况下阅读XML。不可避免地,这些人只能处理输入XML的格式完全符合他们的期望。
(b)然后我们看到人们试图生成XML格式,该XML的格式与(a)类中的某些人期望的一样。通常只能通过“手工格式化” XML来实现,而不是使用通用XML库来实现。
这些人没有了解XML的全部内容,而是要使用一种标准格式进行数据交换,以减少成本。