• Jueves 28 de Marzo de 2024, 16:59

Autor Tema:  Dataset Con Complextypes Y Xml  (Leído 1895 veces)

cl_delm

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Dataset Con Complextypes Y Xml
« en: Lunes 31 de Mayo de 2004, 02:54 »
0
Buenas, soy nuevo en este foro, pero he leido las reglas :)
Hace ya bastante tiempo estoy tratando de entender bien el manejo de XML en VS.NET, y para ello creé un pequeño formulario (solo textbox, botones y labels) con el objetivo de leer un archivo xml, hacerle cambios (añadir informacion, borrar, editar, etc) y luego guardarlo.
Los metodos para hacerlo son bastante directos y simples, pero me he topado con un problema al cual no le he encontrado solucion en ninguna de las paginas especializadas que he leido.
Mi archivo XML está basado en un esquema xsd que he hecho en el diseñador de VS.NET. consta de un simpleType, un complexType y un árbol de elementos (adjunto el diseño como imagen). Este esquema tiene su correspondiente archivo xml con dos filas deinformación que he agregado mediante el diseñador de VS.NET. El formulario tiene un dataset con el esquema asignado y todos los campos de texto estan correctamente "unidos" a los correspondientes campos de mi dataset (customerList1).
El procedimiento que uso para abrir el archivo es:
Código: Text
  1.  
  2. private void LoadXML(string Filename)
  3. {
  4.   if (Filename!="")
  5.   {
  6.      customerList1.Clear();
  7.      this.OpenedFile = Filename; //propiedad que guarda el archivo abierto
  8.      customerList1.ReadXml(this.OpenedFile);
  9.    }
  10. }
  11.  
  12.  
Funciona de marabilla y tengo unos botones que me mueven entre los distintos registros del dataset (tal cual en los ejemplos del MSDN).
El borrar tambien funciona de marabilla.
el problema es para añadir nuevos registros.
Este es mi codigo actual:
Código: Text
  1.  
  2. private void btn_ingresa_Click(object sender, System.EventArgs e)
  3. {
  4.    //creo todas las filas necesarias
  5.   DataRow CR = customerList1.customer.NewRow();
  6.   DataRow BTAR = customerList1.BillToAddress.NewRow();
  7.   DataRow STAR = customerList1.ShipToAddress.NewRow();
  8.   //seteo valores iniciales
  9.   CR.ItemArray = new Object[] {"","","",""};
  10.   BTAR.ItemArray = new Object[] {"","","",00000};
  11.   STAR.ItemArray = new Object[] {"","","",00000};
  12.   //añado las filas a las tablas correspondientes
  13.   customerList1.Rows.Add(CR);
  14.   customerList1.BillToAddress.Rows.Add(BTAR);
  15.   customerList1.ShipToAddress.Rows.Add(STAR);
  16.   //le digo que muestre las nuevas filas
  17.   this.BindingContext[customerList1,"customer"].Position =  this.BindingContext[customerList1,"customer"].Count;
  18.    positionChanged();
  19. }
  20.  
  21.  
Y esto es lo que funciona a medias. me explico:
una vez creo la nueva fila en todas las tablas, y edito su contenido mediante el formulario, y luego grabo el archivo (customerList1.WriteXml()), solo guarda la primera tabla, esto es los valores de CompanyName, ContactName,Email y Phone, mientras que los valores de las otras dos tablas (que segun yo deberian escribirse también) se omiten, incluso se borran del formulario mismo antes de grabar (¿quiere decir que de alguna forma esos valores nunca entran al dataset?).
Mis intuiciones me dicen que no estoy creando bien las filas para estas tablas "hijas" y que es por esto que no guarda estos valores, pero he tratado de hacerlo de muchas formas ya. Cuando creo la fila para la tabla customer, no crea automaticamente las filas para las tablas hijas BillToAddress y ShipToAddress, y no he podido acceder a darles valores.
Bueno, muchas gracias por leer hasta aqui, y si me pueden ayudar en cualquier manera estare muy agradecido. Como muchos, estoy haciendo esto por el amor a aprender :).
Saludos desde Chile.
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
/*
**  ||dELm||
**
**  al sur del mundo \":P\"
*/

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Dataset Con Complextypes Y Xml
« Respuesta #1 en: Martes 1 de Junio de 2004, 08:00 »
0
No he manejado mucho de XML en .net...
apenas lo necesario para mi.

anexo ejemplomusando
XmlTextWriter y XmlTextReader.

No usa nada de xsd ni de nada de eso solo XML y ya...
espero que lo entiendas.
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

cl_delm

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Dataset Con Complextypes Y Xml
« Respuesta #2 en: Martes 1 de Junio de 2004, 21:51 »
0
gracias juanK, lo reviso y te cuento como me va.
 :smartass:
en todo caso el problema creo que esta relacionado con el diseño del esquema y la forma de manejarlo. Creo que hay que hacer relaciones o algo asi... en realidad solo tengo vagas pistas de lo que pueda ser.
las funciones para escribir y leer archivos xml son bastante simples y directas. el problema es entre medio de leer y escribir si quieres hacer un proceso con la informacion. (esa es mi meta, tener dominio sobre las transacciones de datos con xml... este es solo el 1er paso :P)
denuevo gracias.
/*
**  ||dELm||
**
**  al sur del mundo \":P\"
*/

cl_delm

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Dataset Con Complextypes Y Xml
« Respuesta #3 en: Domingo 13 de Junio de 2004, 01:32 »
0
uff.. me demore un resto, porque tengo cantidad de trabajo... pero logre hacerme un tiempo para mi projecto personal y revise lo que me dejaste.
La verdad es que no me sirve el método que usas, porque yo pretendo haecr un programa que me lea cualquier xml, teniendo de antemano el esquema, cosa de que lo valide y que cualquier persona pueda hacer en cualquier programa xml para mi programa.
Los xml serian un reemplazo de una base de datos (a muy pequeña escala) y necesito manejar relaciones entre tablas con esquemas complejos.
Hasta ahora no he podido solucionar mi problema, pero he mejorado bastante el codigo.
sigo sin encontrar buena informacion acerca del tema, ya que todos los articulos que encuentro solo se refieren a esquemas simples sin relaciones... y los articulos que encuentro sobre relaciones no manejan de la forma que necesito los esquemas...

Cuando logre hacer algo que funcione, prometo ponerlo aqui con el codigo fuente y las explicaciones pertinentes. :)

seguiré trabajando.
saludos!
/*
**  ||dELm||
**
**  al sur del mundo \":P\"
*/