在XElement中的xattribute之间输入换行/回车.ToString的结果
本文关键字:回车 ToString 结果 换行 输入 XElement 中的 xattribute 之间 | 更新日期: 2023-09-27 18:03:07
是否没有办法在XElement的属性之间出现换行符?生成的xml字符串?
下面的代码不起作用——它保留了换行符,但是把它们放在所有属性的下面,所以只有4/5个空行:
new XElement("options", new XText("'r'n"),
new XAttribute("updated", Updated.XmlTime()), new XText("'r'n"),
new XAttribute("color", Color), new XText("'r'n"),
new XAttribute("puppies", Puppies), new XText("'r'n"),
new XAttribute("isTrue", IsTrue), new XText("'r'n"),
new XAttribute("kitties", Kitties ?? "")),
您可以使用XmlWriter
。试试这个:
public static string ToStringFormatted(this XElement xml)
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.NewLineOnAttributes = true;
StringBuilder result = new StringBuilder();
using (XmlWriter writer = XmlWriter.Create(result, settings)) {
xml.WriteTo(writer);
}
return result.ToString();
} // ToStringFormatted
然后var xml =new XElement("options",
new XAttribute("updated", "U"),
new XAttribute("color", "C"),
new XAttribute("puppies", "P"),
new XAttribute("isTrue", "I"),
new XAttribute("kitties", "K")
);
Console.WriteLine(xml.ToStringFormatted());
生产:
<options
updated="U"
color="C"
puppies="P"
isTrue="I"
kitties="K" />
您可以使用不同的XmlWriterSettings
属性来设置不同的格式
无法在XML对象中添加新行,因为XML DOM中属性之间没有"文本节点"。每个节点的所有属性都在一个大的无序*表中,并且没有"纯文本"属性。
只有XML的文本表示可以有这样的属性格式。注意,当这样的XML加载到DOM/reader中时,属性之间的所有格式化都将丢失。
你可以用你想要的格式实现你自己的XmlWriter。
*)大多数XML DOM实现保持属性在源中的顺序或它们被添加的顺序,但没有必要这样做。