16

XMLWriter和有什么区别XMLDictionaryWriter?通常在哪些情况下使用每一种?

4

2 回答 2

18

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();
}
于 2010-09-22T15:47:09.803 回答
7

XmlWriter是一个抽象类,用于以只进方式编写 XML 文档。您使用静态Create方法来创建类的具体实现以供使用。当您需要为任何用途快速创建任意 XML 时,这种创建 XML 文档的方法非常有用。

XmlDictionaryWriter是一个抽象类,用于将对象与 XML 进行序列化和反序列化。据我了解,它在 WCF 中用于序列化对象以通过网络移动。XmlDictionaryWriter可以使用二进制、文本或 MTOM 格式进行序列化。如果您特别需要自定义(反)序列化以在 WCF 上使用,我希望您只会使用此类。另请参见此处

希望有帮助。

于 2010-09-22T15:43:01.713 回答