Parsear XML y guardar en tabla

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.

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:

<?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>
1 me gusta

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.

Saludos
Paco Satué

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

Muchas gracias Paco.