2011-03-03 26 views
6

Tengo un par de archivos XML con los que necesito trabajar, y siempre he usado los objetos XElement y he extraído los datos mediante el nombre del atributo o el valor del XElement.Diseño Objeto fuertemente tipado de XML

Sé que tiene que haber una mejor forma de usar XML en C#. ¿Cuál es la mejor forma de generar automáticamente o generar manualmente un objeto fuerte tipado desde el archivo XML?

El XML es en forma de

<Group id="####"> 
    <title>Some Title</title> 
    <description>some description</description> 
    <Rule id="ID_##" severity="medium" weight="10.0"> 
     <version>1.001</version> 
     <title>Another Title</title> 
     <description>Very long description</description> 
     <fixtext fixref="F-31r1_fix">Description of fix</fixtext> 
     <fix id="F-31r1_fix"/> 
     <check system="C-7883r4_chk"> 
      <check-content-ref name="M" href="URI"/> 
      <check-content>Content</check-content> 
     </check> 
    </Rule> 
</Group> 

Si pudiera analizar un archivo XML en un List<Group> que sería lo mejor.

La única forma en que puedo pensar es crear manualmente los objetos de Grupo, Regla y Verificar y asignar manualmente los datos. Si hay una forma mejor y más automatizada para hacer esto, ¡por favor hágamelo saber!

Respuesta

8

Puede usar xsd.exe (que se instala con el SDK de Windows, pero en varias ubicaciones, según la versión, la mía se encuentra actualmente en C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin) para generar y xsd del archivo o un archivo de código cs.

Por ejemplo:

xsd.exe myFile.xml 

le conseguirá myFile.xsd en la ubicación del archivo XML.

Entonces,

xsd.exe myFile.xsd /c 

le conseguirá un archivo .cs con las clases definidas. Pruebe xsd.exe /? para ver las opciones completas (también puede especificar espacios de nombres, etc.).

1

Si tiene un esquema para el XML, puede generar clases utilizando herramientas como xsd.exe (Windows SDK), svcutil.exe (WCF) o (mi preferencia personal) una alternativa de código abierto (Xsd2Code).

1

Se puede poner anotaciones en su clase y luego utilizar un XmlSerializer para serializar/deserializar instancias de la clase a/desde XML - si necesita un enfoque más personalizado tener su clase también implementar IXmlSerializable luego poner ese código de serialización/deserialización dentro del clase.

4

Salida Linq to XSD:

El LINQ a XSD tecnología proporciona a los desarrolladores .NET con soporte para la programación XML con tipo. LINQ to XSD contribuye al proyecto LINQ (.NET Language Integrated Query); en particular, LINQ to XSD mejora la tecnología existente LINQ to XML.

1

Si usted es capaz de cambiar el formato XML para satisfacer sus necesidades, de una manera que conozco está utilizando WSDL.

Cuestiones relacionadas