【发布时间】:2010-08-30 20:49:25
【问题描述】:
XMLWriter 和 XMLDictionaryWriter 有什么区别?每一种一般都用在什么情况下?
【问题讨论】:
-
我喜欢 XMLDictionaryWriter 在 MSDN 上的描述:一个抽象类,它派生出来做序列化和反序列化。
标签: .net xml-serialization xmlwriter
XMLWriter 和 XMLDictionaryWriter 有什么区别?每一种一般都用在什么情况下?
【问题讨论】:
标签: .net xml-serialization xmlwriter
XmlWriter 是一个抽象类,其中XmlDictionaryWriter 是继承自它的类之一,它本身就是一个抽象类。
我正在暗中尝试,您想将它与DataContractSerializer 或一般的反序列化一起使用。 XmlDictionaryWriter 是 WCF 用来进行反序列化的基类。
据此,我推断XmlDictionaryWriter 必须进行一些性能调整,以使其在 WCF 反序列化任务中的性能更高。实际上,如果您调用 WriteObject(Stream, object) 而不是 WriteObject(XmlWriter, object) 或 WriteObject(XmlDictionaryWriter, object) 方法,它将为您创建一个 XmlDictionaryWriter
public virtual void WriteObject(Stream stream, object graph)
{
CheckNull(stream, "stream");
XmlDictionaryWriter writer = XmlDictionaryWriter.CreateTextWriter(stream, Encoding.UTF8, false);
this.WriteObject(writer, graph);
writer.Flush();
}
【讨论】:
XmlWriter 是一个抽象类,用于以只进方式编写 XML 文档。您使用静态Create 方法来创建类的具体实现以供使用。当您需要为任何用途快速创建任意 XML 时,这种创建 XML 文档的方法非常有用。
XmlDictionaryWriter 是一个抽象类,用于序列化和反序列化与 XML 之间的对象。据我了解,它在 WCF 中用于序列化对象以通过网络移动。 XmlDictionaryWriter 可以使用二进制、文本或 MTOM 格式进行序列化。如果您特别需要自定义(反)序列化以在 WCF 上使用,我希望您只会使用此类。另见here。
希望对您有所帮助。
【讨论】: