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>