2010-09-30 26 views
6

Uso el .NET 4.0 Framework. Necesito escribir algo de XML para interactuar con un servicio web. Los parámetros pasados ​​al servicio web serán ingresados ​​por un usuario final.Lectura y escritura de XML en C#

Mi pregunta es, ¿cuál es el enfoque recomendado para interactuar con XML en estos días? Parece que con cada versión de .NET Framework hay una nueva forma de hacer lo mismo. Pero eso no significa necesariamente que sea el mejor. ¿Qué recomienda la comunidad en este caso?

+0

Todo depende del tipo de XML que desee generar. Y como esto es específico de los servicios web, es posible que obtenga la generación XML de forma gratuita, p. de WCF (aunque a su pregunta le faltan los detalles necesarios para saber esto). –

Respuesta

9

No hay ninguno nuevo en cada versión. Solo hay dos. Es lamentable que haya dos, pero ciertamente no hay más de dos.

El que yo recomiendo es System.Xml.Linq.XDocument y sus clases asociadas. Proporcionan una API limpia y útil que le permite usar los métodos de extensión LINQ y Enumerable. Generar un árbol XML en esta API es fácil porque puede anidar llamadas de constructor y termina con un código que se parece mucho al XML en sí.

La que no recomiendo es System.Xml.XmlDocument. Es antiguo y fue diseñado para seguir las recomendaciones del W3C para una API XML. En consecuencia, no tiene soporte para ninguna idea moderna o específica de C#, incluidos enumerables y LINQ. Generar un árbol XML en esta API es tortuoso: debes crear cada elemento individualmente y llamar a métodos como AppendChild para convertirlos en un árbol.

+1

No se olvide de las clases 'XPathDocument' y' XmlReader'/'XmlWriter'. Y también está el serializador XML ... –

+0

Estoy totalmente de acuerdo: evite System.Xml.XmlDocument y aprenda a usar LINQ para XDocument de XML: terminará escribiendo mucho menos código, el código que escriba estará más limpio, más rápido y menos problemático, y podrá reutilizar muchos de los modismos del código LINQ en el resto de su código. –

2

Si el servicio es WCF o implementa los estándares WS- *, debe poder agregar una referencia de servicio desde su proyecto e interactuar con él a través de una entidad, en lugar de hacer todas las llamadas de red y manejar el mensajes de forma manual.

0

Cada vez que necesito trabajar con XML creo que para la serialización. Simplemente marque la clase con [Serializible] y propiedades con el atributo correspondiente de System.Xml.Serialization y solo serialice los objetos. Esto funciona solo si el formato del XML es seguro, p. puedes describir el XML con clases. Si no te puede gustar, @Timwi dijo que System.Xml.Linq.XDocument es la mejor opción.

Cuestiones relacionadas