# Parsear XML y guardar en tabla

**URL:** <https://foros.velneo.com/t/parsear-xml-y-guardar-en-tabla/11553>\
**Category:** Velneo\
**Created:** [20 Diciembre, 2024 17:30 UTC](https://foros.velneo.com/t/parsear-xml-y-guardar-en-tabla/11553 "2024-12-20T17:30:46Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![admin18](https://avatars.discourse-cdn.com/v4/letter/a/839c29/32.png) [@admin18](https://foros.velneo.com/u/admin18)\
**Post date:** [20 Diciembre, 2024 17:30 UTC](https://foros.velneo.com/t/parsear-xml-y-guardar-en-tabla/11553/1 "2024-12-20T17:30:46Z")

</div>

Estoy intentando parsear un fichero XML de prueba, para guardar en tabla, pero no consigo que lo haga. Si alguien puede ver el error, que soy incapaz de encontrar, se lo agradecería. Gracias.

```auto
importClass("VXmlReader");
importClass("VFile");

var fileEdit = theRoot.varToString("SND");
var inFile = new VFile( fileEdit.text );
inFile.open(VFile.OpenModeReadOnly);

var xml = new VXmlReader();
xml.setFile(inFile);

while (xml.readNextStartElement()) {
    if (xml.name() === "curdatos") {
        
        var empresa = "", cuenta = "", nombre = "", cif = "", fecha = "", subtotal = 0;

        while (xml.readNextStartElement()) {
            switch (xml.name()) {
                case "empresa":
                    empresa = xml.readElementText();
                    break;
                case "cuenta":
                    cuenta = xml.readElementText();
                    break;
                case "nombre":
                    nombre = xml.readElementText();
                    break;
                case "cif":
                    cif = xml.readElementText();
                    break;
                case "fecha":
                    fecha = xml.readElementText();
                    break;
                case "subtotal":
                    subtotal = parseFloat(xml.readElementText());
                    break;
                default:
                    xml.skipCurrentElement();
                    break;
            }
        }

        // Guardar los datos en la tabla
        var registro = new VRegister(theRoot);
        registro.setTable("IMP_XML"); 
        registro.setField("EMPRESA", empresa);
        registro.setField("CUENTA", cuenta);
        registro.setField("NOMBRE", nombre);
        registro.setField("CIF", cif);
        registro.setField("FECHA", fecha);
        registro.setField("SUBTOTAL", subtotal);
        registro.addRegister();
    } else {
        xml.skipCurrentElement();
    }
}

inFile.close();

```

Este es un ejemplo del fichero xml:

```auto
<?xml version = "1.0" encoding="Windows-1252" standalone="yes"?>
<VFPData>
	<curdatos>
		<empresa>01</empresa>
		<orden>0</orden>
		<cuenta>43099263</cuenta>
		<nombre>Cliente 1</nombre>
		<cif>B11111111</cif>
		<fecha>2024-08-19</fecha>
		<fechaoper>2024-11-26</fechaoper>
		<num_ini/>
		<num_fin/>
		<numfra>2400445</numfra>
		<bimpo>-1134.000</bimpo>
		<tipo_iva>A5</tipo_iva>
		<porcen_iva>10.00</porcen_iva>
		<iva>-113.400</iva>
		<bimporec>0.000</bimporec>
		<porcen_rec>0.00</porcen_rec>
		<recargo>0.000</recargo>
		<subtotal>-1247.400</subtotal>
		<asiento>3536</asiento>
		<referencia/>
		<fechafac>2024-08-19</fechafac>
		<recc>false</recc>
		<ivacj>false</ivacj>
		<es_total>false</es_total>
		<clavepago/>
		<nomclavepg/>
		<imprecc>0.000000</imprecc>
		<asicrecc/>
		<tipocli>1</tipocli>
	</curdatos>
	<curdatos>
		<empresa>01</empresa>
		<orden>0</orden>
		<cuenta>43000811</cuenta>
		<nombre>Cliente 2</nombre>
		<cif>B22222222</cif>
		<fecha>2024-10-01</fecha>
		<fechaoper>2024-10-01</fechaoper>
		<num_ini/>
		<num_fin/>
		<numfra>20242277</numfra>
		<bimpo>274.200</bimpo>
		<tipo_iva>A5</tipo_iva>
		<porcen_iva>10.00</porcen_iva>
		<iva>27.420</iva>
		<bimporec>274.200</bimporec>
		<porcen_rec>1.40</porcen_rec>
		<recargo>3.840</recargo>
		<subtotal>305.460</subtotal>
		<asiento>2227</asiento>
		<referencia/>
		<fechafac>2024-10-01</fechafac>
		<recc>false</recc>
		<ivacj>false</ivacj>
		<es_total>false</es_total>
		<clavepago/>
		<nomclavepg/>
		<imprecc>0.000000</imprecc>
		<asicrecc/>
		<tipocli>1</tipocli>
	</curdatos>
</VFPData>

```

---

<div class="post-metadata">

**Author:** ![correo](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/correo/32/5689_2.png) [@correo](https://foros.velneo.com/u/correo)\
**Post date:** [21 Diciembre, 2024 19:36 UTC](https://foros.velneo.com/t/parsear-xml-y-guardar-en-tabla/11553/2 "2024-12-21T19:36:00Z")

</div>

Hola admin18.

Tienes ejemplos de **procesado de XML** en la aplicación **MiAPI** del cloud de Ejercicios con Velneo.

Échale un vistazo al ejercicio _“25. XML - Ejemplo leer campos”_ de la rama **XML** en el que he utilizado tu archivo XML.

 ![image](https://canada1.discourse-cdn.com/flex035/uploads/velneo/original/2X/a/a5f7bad63311afc2412fa370b329aeaa0f3d45ea.png)

Saludos  
Paco Satué

---

<div class="post-metadata">

**Author:** ![admin18](https://avatars.discourse-cdn.com/v4/letter/a/839c29/32.png) [@admin18](https://foros.velneo.com/u/admin18)\
**Post date:** [23 Diciembre, 2024 10:47 UTC](https://foros.velneo.com/t/parsear-xml-y-guardar-en-tabla/11553/3 "2024-12-23T10:47:48Z")

</div>

Hola Paco,  
Me he suscrito a los Ejercicios con Velneo, pero no he recibido las claves de acceso.  
Un saludo

---

<div class="post-metadata">

**Author:** ![admin18](https://avatars.discourse-cdn.com/v4/letter/a/839c29/32.png) [@admin18](https://foros.velneo.com/u/admin18)\
**Post date:** [26 Diciembre, 2024 15:46 UTC](https://foros.velneo.com/t/parsear-xml-y-guardar-en-tabla/11553/4 "2024-12-26T15:46:22Z")

</div>

Muchas gracias Paco.
