Интервал вывода с Linq в Xml - PullRequest
0 голосов
/ 23 декабря 2009

Как можно увеличить интервал между некоторыми узлами, используя Linq to Xml? Я хочу вывести следующее:

<root>

    <group>
        <leaf />
    </group>

    <group>
        <leaf />
    </group>

</root>

Добавляя Empty XText, он только уничтожает форматирование.

var root =
    new XElement("root",
        new XText(""),
        new XElement("group",
            new XElement("leaf")),
        new XText(""),
        new XElement("group",
            new XElement("leaf")),
        new XText(""));

Console.WriteLine(root.ToString());

в результате

<root><group><child /></group><group><child /></group></root>

Ответы [ 3 ]

1 голос
/ 23 декабря 2009
using (var writer = XmlWriter.Create(
    Console.Out,
    new XmlWriterSettings { Indent = true })
{
    root.WriteTo(writer);
}
1 голос
/ 23 декабря 2009

Это решение, но оно не красиво ...

Измените XText на XComment и сделайте что-то вроде этого ...

 
    var root =
        new XElement("root",
            new XComment(""),
            new XElement("group",
                new XElement("leaf")),
            new XComment(""),
            new XElement("group",
                new XElement("leaf")),
            new XComment(""));

    Console.WriteLine(XElementToText(root));


    private string XElementToText(XElement element)
    {
        var sb = new StringBuilder();
        using (var writer = XmlWriter.Create(sb, 
            new XmlWriterSettings {Indent = true}))
        {
            element.WriteTo(writer);
        }
        return sb.ToString().Replace("<!---->", string.Empty);
    }

Редактировать: Фоготт, чтобы избежать меньше, чем ...

0 голосов
/ 23 декабря 2009

Передайте XmlTextWriterFormatting, установленным на Formatting.Indented) на root.WriteTo().

Например:

using(var writer = new XmlTextWriter(Console.Out));
{
    writer.Formatting = Formatting.Indented;
    root.WriteTo(writer);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...