sharp serialize net example deserialize .net xml-serialization xmlwriter

.net - serialize - XMLWriter vs XMLDictionaryWriter



vb net serialize object to xml file (2)

¿Cuál es la diferencia entre XMLWriter y XMLDictionaryWriter ? ¿En qué casos se utiliza generalmente cada uno?


XmlWriter es una clase abstracta que se utiliza para escribir documentos XML de forma exclusiva. Utiliza el método estático Create para crear implementaciones concretas de la clase para su uso. Este método de crear documentos XML es útil cuando necesita crear rápidamente XML arbitrario para cualquier uso.

XmlDictionaryWriter es una clase abstracta utilizada para la serialización y deserialización de objetos hacia y desde XML. Por lo que entiendo, se usa en WCF para serializar objetos para moverse a través del cable. XmlDictionaryWriter puede serializar utilizando formatos binarios, de texto o MTOM. Yo esperaría que solo usara esta clase si estuviera específicamente necesitando (des) serialización para su uso sobre WCF. Véase también here .

Espero que ayude.


XmlWriter es una clase abstracta de la cual XmlDictionaryWriter es una de las clases que hereda de ella y es en sí misma una clase abstracta.

Estoy probando en la oscuridad que desea usarlo con el DataContractSerializer o con la des / serialización en general. XmlDictionaryWriter es la clase base utilizada por WCF para realizar su des / serialización.

A partir de eso deduciría que debe haber algún ajuste de rendimiento en XmlDictionaryWriter para que sea más XmlDictionaryWriter con las tareas de des / serialización de WCF. De hecho, si llama a los WriteObject(Stream, object) lugar de WriteObject(XmlWriter, object) o WriteObject(XmlDictionaryWriter, object) , creará un XmlDictionaryWriter para usted.

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(); }