sharp serialize serializar example deserializar c# xml serialization xml-serialization

serialize - Cómo mapeo XML a objetos C#



system xml serialization example c# (9)

Tengo un XML que quiero cargar a los objetos, manipular esos objetos (establecer valores, leer valores) y luego guardar esos XML de nuevo. Es importante para mí tener el XML en la estructura (xsd) que creé.

Una forma de hacerlo es escribir mi propio serializador, pero ¿hay un soporte integrado para él o código abierto en C # que pueda usar?


Apuesto que NetDataContractSerializer puede hacer lo que quieras.


Este código (C # DotNet 1.0 en adelante) funciona bastante bien para serializar la mayoría de los objetos a XML. (y viceversa) No funciona para objetos que contengan ArrayLists, y si es posible, conserve solo el uso de Arrays

using System; using System.IO; using System.Text; using System.Xml.Serialization; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; public static string Serialize(object objectToSerialize) { MemoryStream mem = new MemoryStream(); XmlSerializer ser = new XmlSerializer(objectToSerialize.GetType()); ser.Serialize(mem, objectToSerialize); ASCIIEncoding ascii = new ASCIIEncoding(); return ascii.GetString(mem.ToArray()); } public static object Deserialize(Type typeToDeserialize, string xmlString) { byte[] bytes = Encoding.UTF8.GetBytes(xmlString); MemoryStream mem = new MemoryStream(bytes); XmlSerializer ser = new XmlSerializer(typeToDeserialize); return ser.Deserialize(mem); }


Estoy de acuerdo en que xsd es realmente una mierda ... Pero hicieron otra versión que casi nadie conoce. Se llama generador de objetos xsd. Es la próxima versión y tiene muchas más opciones. Genera archivos de XSD y funciona de manera fantástica. Si tiene un generador de esquema como XML espía; crea un xsd de tu xml y usa esta herramienta. Creé clases muy complejas usando esta herramienta. Luego crea clases parciales para propiedades / métodos adicionales, etc. Luego, cuando actualices tu esquema, solo regenerarás tus clases y las ediciones subsistirán en tus clases parciales.

http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=7075


Hemos creado un marco que puede autogenerar clases C # fuera de su XML. Es una plantilla de elementos visuales a la que pasa su XML y las clases se generan automáticamente en su proyecto. Usando estas clases puedes crear / leer / escribir tu XML.

Consulte este enlace para ver el marco y la plantilla del elemento de Visual C #: haga clic aquí


Puede generar clases C # serializables desde un esquema (xsd) usando xsd.exe:

xsd.exe dependency1.xsd dependency2.xsd schema.xsd /out:outputDir

Si el esquema tiene dependencias (incluidos / esquemas importados), todos deben estar incluidos en la misma línea de comando.


Use el programa de línea de comandos xsd.exe que viene con Visual Studio para crear archivos de clase que puede usar en su proyecto / solución, y el espacio de nombres System.Xml.Serialization (específicamente, la clase XmlSerializer) para serializar / deserializar esas clases hacia y desde disco.


utilizando System.Xml.Serialization; este espacio de nombres tiene todos los atributos que necesitará si desea asignar su xml a cualquier objeto aleatorio. Alternativamente, puede usar la herramienta xsd.exe

xsd file.xsd {/ classes | / dataset} [/ element: element] [/ language: language] [/ namespace: namespace] [/ outputdir: directory] [URI: uri] que tomará sus archivos xsd y creará clases de c # o vb.net.

http://msdn.microsoft.com/en-us/library/x6c1kb0s(VS.71).aspx