XML - Cargar xml con datos

 
Vista:

Cargar xml con datos

Publicado por koes (1 intervención) el 17/01/2006 12:15:00
Buenas,
Mi problema es el siguiente:
Tengo que devolver un string con estructura xml(La estructura del xml puede variar en cualquier momento, pero no asi los datos que se devuelven). Hasta ahora lo que he estado usando es crear a pelo el string en una clase (Tengo un metodo toXML() en la clase donde tengo los datos que tengo que devolver)
strResult.Append("<x1>\n");
strResult.Append("<x2r>" + atributo1 + "</x2>\n");
strResult.Append("<x3>" + atributo2+ "</x3>\n");
strResult.Append("<x4>" + atributo3 + "</x4>\n");
....

El tener esto asi provoca que si me cambian la estructura del xml, tengo que cambiar el metodo y recompilar la aplicacion. Quisiera saber si hay alguna forma de, por ejemplo tener un fichero con la estructura del xml y añadirle algun tag donde debería ir el valor y que desde tu programa llamando a una clase que automaticamente usando ese tag (que indicaría que atributo de una clase que tiene el valor a insertar en esa posicion del xml) rellene el xml.

Usando DOM para rellenar el xml necesitas saber los tags del xml (<x1>, <x2>, ...) lo que, si cambian la estrucutura y nombre de los tags, haría que fuese necesario recompilar y esa solucion no sería valida para mi caso

No se si me he explicado bien.
De todas formas si alguien sabe como que me lo explique.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Generación dinámica de estructura y datos

Publicado por Alejandro (258 intervenciones) el 12/07/2023 18:58:04
En lugar de construir el XML manualmente mediante la concatenación de cadenas, puedes utilizar una biblioteca o enfoque que te permita generar el XML de manera dinámica a partir de una estructura de datos y una plantilla.

Una opción es utilizar bibliotecas de serialización XML disponibles en diferentes lenguajes de programación, como JAXB para Java, lxml para Python o XmlSerializer para .NET. Estas bibliotecas te permiten definir una estructura de datos en tu código y generar el XML correspondiente automáticamente.

A continuación, te proporciono un ejemplo de cómo se podría implementar en C# utilizando la biblioteca XmlSerializer:

1. Define una clase que represente la estructura de datos que deseas incluir en el XML:

1
2
3
4
5
6
7
public class MiClase
{
    public string Atributo1 { get; set; }
    public string Atributo2 { get; set; }
    public string Atributo3 { get; set; }
    // Agrega más propiedades según sea necesario
}

2. Crea una instancia de la clase y asigna los valores a sus propiedades:

1
2
3
4
MiClase miObjeto = new MiClase();
miObjeto.Atributo1 = "valor1";
miObjeto.Atributo2 = "valor2";
miObjeto.Atributo3 = "valor3";

3. Utiliza la biblioteca XmlSerializer para serializar la instancia de la clase en un XML:

1
2
3
4
5
6
7
using System.Xml.Serialization;
using System.IO;
 
XmlSerializer serializer = new XmlSerializer(typeof(MiClase));
StringWriter writer = new StringWriter();
serializer.Serialize(writer, miObjeto);
string xmlResult = writer.ToString();

El resultado será un string que contiene el XML generado dinámicamente basado en la estructura de la clase `MiClase` y los valores asignados a sus propiedades.

De esta manera, si la estructura del XML cambia, solo necesitarás actualizar la clase `MiClase` y los valores asignados a sus propiedades, sin tener que modificar manualmente la construcción del XML en tu código.

Recuerda adaptar el ejemplo según tu lenguaje de programación y requerimientos específicos. También puedes explorar otras bibliotecas o enfoques que proporcionen funcionalidades similares para la generación dinámica de XML.

Espero que esta solución te ayude a generar el XML de manera más flexible y evite la necesidad de recompilar tu aplicación en caso de cambios en la estructura del XML.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar