trabajar con XML

30/05/2007 - 18:02 por Clara | Informe spam
Hola,
Tengo que generar un archivo XML, del qual sé la estructura que debe tener.
Además, tengo el XSD.
Nunca he trabajado con xml, y desearia saber como crear un archivo xml y
llenarlo (no sé si el xsd me puede ayudar en algo).

El archivo debe ser algo asi
<DECLARACION Atributo1="" Atributo2="">
<BLOQUE atributo1 = "", ></BLOQUE>
</DECLARACION>

Supongo que debo crear nodos e irlos insertando. Pero no sé, por ejemplo,
como crear el primer nodo (DECLARACION)

He visto las clases xmlDocument, xmlWriter, ... pero no sé por dónde
empezar.

Grácias
 

Leer las respuestas

#1 Clara
31/05/2007 - 19:24 | Informe spam
Hola Alberto,
La cabecera <?xml...?> sí me la acepta.

El problema es que la clase que me ha generado XSD, empieza así:
[System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=false)]
public class DECLARACION {
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("OTRAPERSONA")]
public OTRAPERSONA[] OTRAPERSONA;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("BLOQUE")]
public BLOQUE[] BLOQUE;
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string TIPODECLARACION;


Aqui el namespace está vacio. Pero el XML que me genera XmlSerializar
enmpieza así:
<DECLARACION xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" TIPODECLARACION="14"
NUMERODECLARACION="" NUMEROCARTAPAGO="" MODELO="600 v1.1.4" PERIODO=""
ANYO="2005">
<OTRAPERSONA CODIGOEXTRANJERO="" CODIGOPAIS="ES" SIGLASVIAPUBLICA="AV"
TIPOPERSONA="SP" ESCALERA="" LOCALIDAD="TERRASSA" NIF="39170900Z"
CODIGOPOSTAL="08224" NUMEROEDIFICIOOPUNTOKILOMETRICO="55"
NOMBREVIAPUBLICA="TORRELLA" NOMBREORAZONSOCIAL="MIQUEL BUSOM MASJOAN"
PISO="2" SECUENCIA="1" PROVINCIAOPAIS="43" TELEFONO="937890821" PUERTA="">
<DATO VALOR="ES" CODIGO="PAIS" TIPO="T" />
<DATO VALOR="" CODIGO="EMAIL" TIPO="T" />
.
</DECLARACION>

Y no hay forma de que no me salga
"xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" dentro del nodo
<DECLARACION> (nodo raíz). Y esto, el programa que recibe el XML no lo
acepta. Dá error de archivo incorrecto. Si lo saco, funciona perfectamente.

Tienes alguna otra idea?

Muchas gracias.


"Alberto Poblacion"
escribió en el mensaje news:%
"Clara" wrote in message
news:
<?xml version="1.0" encoding="utf-8"?>
y, en el nodo root (en mi caso <DECLARACION>) me deja la linea así:
<DECLARACION xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
TIPODECLARACION="14" NUMERODECLARACION="" NUMEROCARTAPAGO="" MODELO="600
v1.1.4" PERIODO="" ANYO="2007">

El programa que espera al XML generado, se me queja por los añadidos (xml
version, xmlns xsd,.)
Es posible decirle que no genere todo esto?



El espacio de nombres (xmlns...) probablemente estaba definido en el
xsd que utilizaste como punto de partida, y el xsd.exe lo pasó dentro de
atributos a la clase generada. Busca en el fuente que te ha generado los
atributos [XmlType(Namespace=...)] y quítales el Namespace.

En cuanto a la cabecera "<?xml...?>", es obligatoria en los archivos
Xml. Si el programa que los lee no la entiende, es éste programa el que se
debería corregir. Pero si no está en tus manos el corregir esa parte,
entonces lo único que se me ocurre es hacer la "chapuza" de volver a leer
el archivo generado y quitarle esa linea. Para no tener que leerlo de
nuevo desde el disco, lo que se puede hacer es serializar sobre un
StringWriter para que quede en memoria, quitarle el trozo que sobra, y
luego ya volcarlo a un fichero.


Preguntas similares