我正在使用
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中的两个标签。但通常情况下,任意嵌套都不是一种选择。
即使对于多行文本,是否有规范的方法来维护缩进?