Generar xml con c#

Actualmente genero en mi programa un archivo de texto con los errores que van ocurriendo en la aplicación. Me gustaría hacer lo mismo pero que los errores se guardaran en un archivo xml bien formado. He probado a serializar la Exception a XML pero no me deja hacerlo, da fallo en tiempo de ejecución.
Luego, a parte de esto, me gustaría poder crear un xml schema desde código.
¿Sabes dónde puedo conseguir información y ejemplos sobre estos temas?

2 respuestas

Respuesta
1
Ok,
para eso estamos!
Si, cierto, System.Xml. Schema sería más útil que un simple xmltextwriter, ya que los xs: de los elementos los escribe automáticos y no hace falta poner en el string xs:nombredelelemento. Nunca te acostarás sin saber una cosa más! Personalmente los esquemas xsd no me gustan demasiado, es más útil un parser, aunque reconozco que para los servicios web es más útil, porque la comprobación del xml la hace más sistemática. Personalmente todos los que he tenido que escribir(que no son muchos) los he hecho con xmltextwriter. En realidad es lo mismo, sólo que tiene algunas funciones especiales, como lo de escribir xs: antes del schema element.
Buenos días!
Gracias por la contestación, sin duda me va a ser muy útil, de todas formas te agradecería que si puedes me pases algún ejemplo de como crear un xml schema desde código, y que luego este schema pudiera ampliarlo, es decir poner más elementos..
Había pensado hacerlo como un datatable, pero el problema es que el archivo xml que genera al hacer un writexml o writexmlschema no es compatible con el access y necesito que lo sea. Si genero el xml schema con el visutal studio de forma gráfica, el access lo abre bien.
Un problema que estoy teniendo con el xmltextwriter es que al escribirlo en un archivo no me escribe nada, es decir, me crea el arhicvo xml pero no escribe nada dentro.
xtw = new xmltextwriter(@"c:\error.xml" encoding.utf8);
xtw.writestartdocument(true);
xtw.writestartelement("root");
xtw.writeendelement();
xtw.writeenddocument();
Si hago lo mismo pero con console.out en vez de un fichero físico, si que lo escribe en consola.
De todas formas no tengo claro si esto me crearía un schema.
Gracias
Hola, más o menos he solucionado mis problemas con los schema con esta página
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemxmlschemaxmlschemaelementclasstopic.asp
Si tengo algún problema te lo diré, si no cerrare la pregunta,
Gracias
Pues el espacio de nombres que necesitas en system.xml. una buena página para este (y otros problemas) es www.thecodeproject.com
te aconsejo que hagas un exception. tostring y que luego ese string es el que serialices en el archivo xml. Sobre todo mira información en la msdn acerca de (una vez importado el espacio de nombres system.xml) xmltextreader y xmltextwriter. Con estas dos clases te basta y te sobra para lo que tú quieres. Estas clases te permiten leer-escribir atributos, etiquetas, nodos, incluir etiquetas dentro de otras y lo hace con DOM. Me consta además que el espacio de nombres system.xml además tiene soporte para xpath, que combina SAX y DOM. Para crear un xsd desde código tendrías que hacer lo mismo, date cuenta de que un documento xml está escrito en texto plano, por lo tanto lo puedes escribir si tu quieres sin ayuda de estas librerías incluso, pero perderías toda la eficiencia de búsqueda que estas tienen ya implementada. Busca en thecodeproject como te he dicho antes para más información, pero con esto creo que ya tienes más que de sobra para empezar, ¿no?
Si no es así, ya sabes, dame 1 toque y te paso algún ejemplillo más concreto.
1 saludo.
-Villalvilla-
Hola de nuevo!
Tengo otro problema, creo un xml schema con c# y lo grabo a disco. En access importo los datos del schema, y me crea bien las tablas pero creándome un campo key en la tabla, esto supongo que pasa porque no se lo creo yo desde código y al no tener un campo key lo crea elsolo, ¿sabes cómo puedo crearlo desde código?
Muchas gracias
Hola, me gustaría crear una clase propia que herede de la System.Xml.Schema,
Poniendo esto no sirve porque es un espacio de nombres: miclase : System.Xml.Schema
Y esto tampoco:
miclase : System.Xml.Schema.XmlSchema
¿Cómo debo hacerlo?
Gracias
Perdón por la tardanza, es que hay mucho trabajo estas semanas y estoy hasta arriba!
¿Conoces el ensamblado de interop services para access? Te permite hacer importaciones de todas esas cosas a access y gestionar todo lo que haces desde access mediante un objeto! No sé la respuesta concreta a lo de la importación del schema, pero creo que te será de gran ayuda el poder usar un ensamblado que te gestione todo ello para que puedas crear las claves a tu gusto una vez importado el schema! Además puedes buscar en la ayuda de ese ensamblado tu problema. Siento no poder ser de más ayuda, pero es que estoy hasta arriba! ¿Cuidate, eh?
El ensamblado es:
Interop. Access.dll y está en los objetos COM de vs.net bajo la descripcion microsoft access object library.
-Villalvilla-
Respuesta
1
NET es bastante ampia. Puedes ver la clase:
System.Xml. Schema. XmlSchema
Hay una forma muy simple de crear archivos XML con datos o sólo con esquemas, y es creando un objeto DataTable y definir sus columnas. Luego le añades los datos.
Además de poder utilizar esos datos para mostrarlos en un DataGrid, puedes también crear ficheros XML con los métodos .WriteXML() y el esquema con .WriteXMLSchema()

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas