用于多行字符串的XML漂亮打印/缩进

时间:2018-04-14 21:45:42

标签: c# xml

我正在使用

XmlWriterSettings xmlWriterSettings = new XmlWriterSettings();
xmlWriterSettings.Indent = true;    
XmlWriter xmlWriter = XmlWriter.Create(@"test.xml", xmlWriterSettings);
xmlSerializer.Serialize(xmlWriter, myObject);

获得漂亮的(缩进的)xml输出。序列化类的对象时

public class MyClass
{
    [XmlText]
    public string MyText
    { 
        get
        {
            // during serialization insert some newlines into my long
            // text in the hopes of getting a nicely formatted XML file
        }
        set
        {
            // just deserialize the string as it is, missing newlines
            // don't matter for the purposes that the text is used for
        }
    }

    // some other properties
}

并在设置

之后
myObject.MyText = "Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua."

我按照XmlWriterSettings的要求为所有其他XML实体缩进,但文本除外:

    <SurroundingElement>
        <MyClass>
Lorem ipsum dolor sit amet, consectetur
adipisici elit, sed eiusmod tempor incidunt
ut labore et dolore magna aliqua.
        </MyClass>
    </SurroundingElement>

而我想得到

    <SurroundingElement>
        <MyClass>
            Lorem ipsum dolor sit amet, consectetur
            adipisici elit, sed eiusmod tempor incidunt
            ut labore et dolore magna aliqua.
        </MyClass>
    </SurroundingElement>

虽然我非常清楚地知道为什么会发生这种情况 - 我实际上是在滥用内容来格式化它的表现形式 - 我想知道是否还有另一种(简单)方法可以将其格式化并且#34;正确&#34;。

当然我也可以在文本格式化过程中插入标签。但是,严格地说,我需要在属性getter中知道当前的缩进级别。在我的特殊情况下,这不是问题,因为文档非常简单,所以我可以硬编码添加到每一行,比如说getter中的两个标签。但通常情况下,任意嵌套都不是一种选择。

即使对于多行文本,是否有规范的方法来维护缩进?

0 个答案:

没有答案