我有一个由用户输入的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();
}
尝试查看设置。缩进字符。
var settings = new XmlWriterSettings()
{
IndentChars = "rn"
}
没有 XML 解析器会保留属性之间出现的精确空格。它只是化妆品。如果您的应用程序依赖于正确设置空格,则该应用程序已严重损坏,您应该修复它。
我们在StackOverflow上经常看到两种问题。
(a(我们看到人们在不使用XML解析器的情况下阅读XML,通常使用正则表达式。不可避免地,只有当传入的 XML 格式完全符合他们的预期时,这些人才能处理传入的 XML。
(b(然后,我们看到人们试图生成XML,其格式与类别(a(中的某人所期望的完全一致。这通常只能通过"手动格式化"XML 来实现,而不是通过使用通用的 XML 库来实现。
这些人错过了XML的全部意义,即使用广泛可用的库支持的标准格式进行数据交换,以降低成本。