XmlTextWriter:如何在我想要的时候写新行,而不是缩进?

时间:2017-01-13 11:31:41

标签: c# xml

我知道如何使用Formatting.indented,但我不想要它,因为它会将每个元素写入一个新行。我想要的是仅在特定元素之前插入新行。换句话说,我想确切地控制新线的制作时间。

这可能吗?

2 个答案:

答案 0 :(得分:3)

您可以使用WriteWhitespace

using (var writer = XmlWriter.Create(Console.Out))
{
    writer.WriteStartElement("root");
    writer.WriteStartElement("child");
    writer.WriteWhitespace("\n");
    writer.WriteStartElement("child-on-new-line");
    writer.WriteString("content");
    writer.WriteEndElement();
    writer.WriteEndElement();
    writer.WriteEndElement();
}

这将输出:

<root><child>
<child-on-new-line>content</child-on-new-line></child></root>

请参阅this fiddle

答案 1 :(得分:0)

白色空间是xml中不关心的。别担心。使用xml linq更容易:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication42
{
    class Program
    {
        static void Main(string[] args)
        {
            XElement book = new XElement("book", new object[] {
                new XElement("title","Pride And Prejudice")
            });

        }

    }
}