Eri*_*tas 54 c# xml formatting datacontractserializer
有没有一种简单的方法可以让DataContractSerializer吐出格式化的XML而不是一个长字符串?我不想以任何方式更改标签或内容,只是让它添加换行符和缩进以使XML更具可读性?
<tagA>
<tagB>This is</tagB>
<tagC>Much</tagC>
<tagD>
<tagE>easier to read</tagE>
</tagD>
</tagA>
<tagA><tagB>This is</tagB><tagC>Much</tagC><tagD><tagE>harder to read</tagE></tagD></tagA>
Run Code Online (Sandbox Code Playgroud)
Ste*_*ock 88
正如bendewey所说,XmlWriterSettings就是你所需要的 - 例如
var ds = new DataContractSerializer(typeof(Foo));
var settings = new XmlWriterSettings { Indent = true };
using (var w = XmlWriter.Create("fooOutput.xml", settings))
ds.WriteObject(w, someFoos);
Run Code Online (Sandbox Code Playgroud)
ben*_*wey 19
看看的Indent属性XmlWriterSettings
更新:这是一个很好的链接来自MSDN 如何:在XmlWriter上指定输出格式
另外,这是一个示例:
class Program
{
static void Main(string[] args)
{
var Mark = new Person()
{
Name = "Mark",
Email = "mark@example.com"
};
var serializer = new DataContractSerializer(typeof(Person));
var settings = new XmlWriterSettings()
{
Indent = true,
IndentChars = "\t"
};
using (var writer = XmlWriter.Create(Console.Out, settings))
{
serializer.WriteObject(writer, Mark);
}
Console.ReadLine();
}
}
public class Person
{
public string Name { get; set; }
public string Email { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在XML文档中调整空格时要小心!调整空格将使XML对我们人类更具可读性,但它可能会干扰机器解析.
根据XML标准,默认情况下空白是重要的.换句话说,就XML而言,空白是内容.
如果将格式良好的XML提供给XML Document对象,则会得到与其中没有空格或换行符的版本不同的结果.您将获得添加到已格式化版本的其他文本节点.
这篇关于XML White Space的 MSDN文章有几个例子,展示了如何处理棘手的空白区域.
如果您仅为人类消费格式化XML,则无关紧要.但是,如果您尝试往返格式化文档,则可能会遇到麻烦.
由于使用DataContractSerializer的主要优点之一是能够无缝地序列化对象和反序列化XML ,因此通常最好不要单独使用丑陋的输出.
我通常将输出粘贴到NotePad ++中,当我想读取它以进行调试时,在它上面运行一个XML-tidy宏.
| 归档时间: |
|
| 查看次数: |
29039 次 |
| 最近记录: |