我一直在寻找,但我似乎无法找到解决方案.. 我正在使用Linq构建XElement,除非我尝试将Xelement.Value换行到多行,否则一切都很顺利。
我的代码如下:
var result = new XElement("Items",
new XAttribute("ID", id),
new XElement("ItemsA", $"\n{string.Join(",\n", ItemsA.Select(x => x.Value))}\n"),
new XElement("ItemsB", $"\n{string.Join(",\n", ItemsB.Select(x => x.Value))}\n"));
结果的输出如下:
<Items ID="123123">
<ItemsA>
items1a,
items2a,
</ItemsA>
<ItemsB>
items1b,
items2b,
</ItemsB>
</Items>
我的问题是 - 如何正确地格式化/缩进?
我尝试过更改$"\n\t{string.Join(",\n\t", ItemsA.Select(x => x.Value))}\n\t"
,但随后标签会更远,然后是其他标签..
我想要实现的目标是:
<Items ID="123123">
<ItemsA>
items1a,
items2a,
</ItemsA>
<ItemsB>
items1b,
items2b,
</ItemsB>
</Items>
我也尝试过:
private static XElement FormatXml(XElement input)
{
var settings = new XmlWriterSettings();
settings.Indent = true;
var builder = new StringBuilder(input.ToString());
using(var writer = XmlWriter.Create(builder, settings))
{
input.WriteTo(writer);
}
return input;
}
但也没有运气..