Leer Xml

Me gustaría saber si me puedes ayudar, tengo un archivo xlm que requiero leer desde visual foxpro 9, estuve mirando en internet y encontré esta función: xmltocursor. El problema es que cuando la ejecuto me marca el siguiente error: XML Parse error: Declaración xml no válida. Line 3, position 3 <?xml version="1.0" encoding="UTF-8"?>.
Yo estoy escribiendo lo siguiente: XMLTOCURSOR("oc_xml.xml","MiCursor", 512)
Y he estado mirando en internet pero no he encontrado solución.
El archivo es así:
<?xml version="1.0" encoding="UTF-8" ?>
- <eanucc:envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:eanucc="http://www.uc-council.org/smp/schemas/eanucc" xmlns:fmcg="http://www.uc-council.org/smp/schemas/fmcg" xsi:schemaLocation="http://www.uc-council.org/smp/schemas/eanucc As2Envelope.xsd http://www.uc-council.org/smp/schemas/eanucc Transaction.xsd http://www.uc-council.org/smp/schemas/eanucc DocumentCommand.xsd http://www.uc-council.org/smp/schemas/eanucc Order.xsd http://www.uc-council.org/smp/schemas/fmcg FmcgIdentification.xsd" communicationVersion="1.0">
- <messageHeader creationDate="2010-02-02T00:00:00">
  <userId>CEN</userId>
<password>PEDIDOS</password>
  <messageIdentifier>142-131</messageIdentifier>
- <to>
  <gln>7709999008174</gln>
  </to>
- <from>
  <gln>7707185370005</gln>
  </from>
- <representingParty>
  <gln>NORMANETCEN01</gln>
  </representingParty>
  </messageHeader>
-
<body>
- <eanucc:transaction>
- <entityIdentification>
  <uniqueCreatorIdentification>142-131</uniqueCreatorIdentification>
- <contentOwner>
  <gln>7707185370005</gln>
  </contentOwner>
  </entityIdentification>
- <command>
- <eanucc:documentCommand>
- <documentCommandHeader type="ADD">
- <entityIdentification>
  <uniqueCreatorIdentification>142-131</uniqueCreatorIdentification>
- <contentOwner>
  <gln>7707185370005</gln>
  </contentOwner>
  </entityIdentification>
  </documentCommandHeader>
- <documentCommandOperand>
- <eanucc:order documentStatus="ORIGINAL" creationDate="2010-02-02T00:00:00">
-
<paymentTerms type="DISCOUNT" eventType="DATE_INVOICE_RECEIVED">
- <netPayment>
  <timePeriodDue type="DAYS">30</timePeriodDue>
  </netPayment>
  </paymentTerms>
  <movementDate>2010-02-02</movementDate>
  <movementDateType>REQUESTED_PICKUP</movementDateType>
- <typedEntityIdentification entityType="ORDER">
- <entityIdentification>
  <uniqueCreatorIdentification>142-131</uniqueCreatorIdentification>
- <contentOwner>
  <gln>7707185370005</gln>
  </contentOwner>
  </entityIdentification>
  </typedEntityIdentification>
- <buyer>
  <gln>7707185370005</gln>
  </buyer>
- <seller>
  <gln>7709999008174</gln>
  </seller>
- <shipParty identificationType="SHIP_TO">
  <gln>7707185371422</gln>
  </shipParty>
-
<lineItem number="1">
- <netPrice>
  <amount currencyISOcode="">16,679.00</amount>
  </netPrice>
  <requestedQuantity>2</requestedQuantity>
- <itemIdentification>
  <gtin>7702057071813</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="2">
- <netPrice>
  <amount currencyISOcode="">6,006.00</amount>
  </netPrice>
  <requestedQuantity>2</requestedQuantity>
- <itemIdentification>
  <gtin>7702057124021</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="3">
- <netPrice>
  <amount currencyISOcode="">26,391.00</amount>
  </netPrice>
  <requestedQuantity>2</requestedQuantity>
- <itemIdentification>
  <gtin>7707172687802</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="4">
- <netPrice>
  <amount currencyISOcode="">15,620.00</amount>
  </netPrice>
  <requestedQuantity>2</requestedQuantity>
- <itemIdentification>
  <gtin>7702132007041</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="5">
- <netPrice>
  <amount currencyISOcode="">5,597.00</amount>
  </netPrice>
  <requestedQuantity>3</requestedQuantity>
- <itemIdentification>
  <gtin>77014535</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="6">
- <netPrice>
  <amount currencyISOcode="">5,224.00</amount>
  </netPrice>
  <requestedQuantity>4</requestedQuantity>
- <itemIdentification>
  <gtin>7702057168049</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="7">
- <netPrice>
  <amount currencyISOcode="">3,765.00</amount>
  </netPrice>
  <requestedQuantity>4</requestedQuantity>
- <itemIdentification>
  <gtin>7703381002382</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="8">
- <netPrice>
  <amount currencyISOcode="">11,874.00</amount>
  </netPrice>
  <requestedQuantity>4</requestedQuantity>
- <itemIdentification>
  <gtin>7702870999745</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="9">
- <netPrice>
  <amount currencyISOcode="">3,688.00</amount>
  </netPrice>
  <requestedQuantity>4</requestedQuantity>
- <itemIdentification>
  <gtin>7702123832645</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="10">
- <netPrice>
  <Amount...

1 Respuesta

Respuesta
1
El error se debe a que el archivo Xml no es un archivo creado con la función CursorToXML de Visual FoxPro, por eso te falla la función XMLToCursor la solución es convertir el archivo XML a formato de una archivo TXT y extraer la información que necesita a un cursor con funciones de extracción de cadenas, en el caso de este archivo ¿qué es lo que necesitarías extraer?
Hola Alonso.
Me gustaría saber si me puedes ayudar, tengo un archivo xlm que requiero leer desde visual foxpro 9, estuve mirando en internet y encontré esta función: xmltocursor. el problema es que cuando la ejecuto me marca el siguiente error: XML Parse error: Declaración xml no válida. Line 3, position 3 <?xml version="1.0" encoding="UTF-8"?>.
Yo estoy escribiendo lo siguiente: XMLTOCURSOR("oc_xml.xml","MiCursor",512)
y he estado mirando en internet pero no he encontrado solución.
el archivo es así:
<?xml version="1.0" encoding="UTF-8" ?>
- <eanucc:envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:eanucc="http://www.uc-council.org/smp/schemas/eanucc" xmlns:fmcg="http://www.uc-council.org/smp/schemas/fmcg" xsi:schemaLocation="http://www.uc-council.org/smp/schemas/eanucc As2Envelope.xsd http://www.uc-council.org/smp/schemas/eanucc Transaction.xsd http://www.uc-council.org/smp/schemas/eanucc DocumentCommand.xsd http://www.uc-council.org/smp/schemas/eanucc Order.xsd http://www.uc-council.org/smp/schemas/fmcg FmcgIdentification.xsd" communicationVersion="1.0">
- <messageHeader creationDate="2010-02-02T00:00:00">
  <userId>CEN</userId>
<password>PEDIDOS</password>
  <messageIdentifier>142-131</messageIdentifier>
- <to>
  <gln>7709999008174</gln>
  </to>
- <from>
  <gln>7707185370005</gln>
  </from>
- <representingParty>
  <gln>NORMANETCEN01</gln>
  </representingParty>
  </messageHeader>
-
<body>
- <eanucc:transaction>
- <entityIdentification>
  <uniqueCreatorIdentification>142-131</uniqueCreatorIdentification>
- <contentOwner>
  <gln>7707185370005</gln>
  </contentOwner>
  </entityIdentification>
- <command>
- <eanucc:documentCommand>
- <documentCommandHeader type="ADD">
- <entityIdentification>
  <uniqueCreatorIdentification>142-131</uniqueCreatorIdentification>
- <contentOwner>
  <gln>7707185370005</gln>
  </contentOwner>
  </entityIdentification>
  </documentCommandHeader>
- <documentCommandOperand>
- <eanucc:order documentStatus="ORIGINAL" creationDate="2010-02-02T00:00:00">
-
<paymentTerms type="DISCOUNT" eventType="DATE_INVOICE_RECEIVED">
- <netPayment>
  <timePeriodDue type="DAYS">30</timePeriodDue>
  </netPayment>
  </paymentTerms>
  <movementDate>2010-02-02</movementDate>
  <movementDateType>REQUESTED_PICKUP</movementDateType>
- <typedEntityIdentification entityType="ORDER">
- <entityIdentification>
  <uniqueCreatorIdentification>142-131</uniqueCreatorIdentification>
- <contentOwner>
  <gln>7707185370005</gln>
  </contentOwner>
  </entityIdentification>
  </typedEntityIdentification>
- <buyer>
  <gln>7707185370005</gln>
  </buyer>
- <seller>
  <gln>7709999008174</gln>
  </seller>
- <shipParty identificationType="SHIP_TO">
  <gln>7707185371422</gln>
  </shipParty>
-
<lineItem number="1">
- <netPrice>
  <amount currencyISOcode="">16,679.00</amount>
  </netPrice>
  <requestedQuantity>2</requestedQuantity>
- <itemIdentification>
  <gtin>7702057071813</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="2">
- <netPrice>
  <amount currencyISOcode="">6,006.00</amount>
  </netPrice>
  <requestedQuantity>2</requestedQuantity>
- <itemIdentification>
  <gtin>7702057124021</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="3">
- <netPrice>
  <amount currencyISOcode="">26,391.00</amount>
  </netPrice>
  <requestedQuantity>2</requestedQuantity>
- <itemIdentification>
  <gtin>7707172687802</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="4">
- <netPrice>
  <amount currencyISOcode="">15,620.00</amount>
  </netPrice>
  <requestedQuantity>2</requestedQuantity>
- <itemIdentification>
  <gtin>7702132007041</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="5">
- <netPrice>
  <amount currencyISOcode="">5,597.00</amount>
  </netPrice>
  <requestedQuantity>3</requestedQuantity>
- <itemIdentification>
  <gtin>77014535</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="6">
- <netPrice>
  <amount currencyISOcode="">5,224.00</amount>
  </netPrice>
  <requestedQuantity>4</requestedQuantity>
- <itemIdentification>
  <gtin>7702057168049</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="7">
- <netPrice>
  <amount currencyISOcode="">3,765.00</amount>
  </netPrice>
  <requestedQuantity>4</requestedQuantity>
- <itemIdentification>
  <gtin>7703381002382</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="8">
- <netPrice>
  <amount currencyISOcode="">11,874.00</amount>
  </netPrice>
  <requestedQuantity>4</requestedQuantity>
- <itemIdentification>
  <gtin>7702870999745</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="9">
- <netPrice>
  <amount currencyISOcode="">3,688.00</amount>
  </netPrice>
  <requestedQuantity>4</requestedQuantity>
- <itemIdentification>
  <gtin>7702123832645</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="10">
- <netPrice>
  <amount currencyISOcode="">11,521.00</amount>
  </netPrice>
  <requestedQuantity>4</requestedQuantity>
- <itemIdentification>
  <gtin>7702870999738</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="11">
- <netPrice>
  <amount currencyISOcode="">10,331.00</amount>
  </netPrice>
  <requestedQuantity>4</requestedQuantity>
- <itemIdentification>
  <gtin>7702123829485</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="12">
- <netPrice>
  <amount currencyISOcode="">6,956.00</amount>
  </netPrice>
  <requestedQuantity>5</requestedQuantity>
- <itemIdentification>
  <gtin>7703381002344</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="13">
- <netPrice>
  <amount currencyISOcode="">4,108.00</amount>
  </netPrice>
  <requestedQuantity>6</requestedQuantity>
- <itemIdentification>
  <gtin>7702132003067</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="14">
- <netPrice>
  <amount currencyISOcode="">4,746.00</amount>
  </netPrice>
  <requestedQuantity>6</requestedQuantity>
- <itemIdentification>
  <gtin>7707172685815</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="15">
- <netPrice>
  <amount currencyISOcode="">7,828.00</amount>
  </netPrice>
  <requestedQuantity>6</requestedQuantity>
- <itemIdentification>
  <gtin>7703381002498</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="16">
- <netPrice>
  <amount currencyISOcode="">1,163.00</amount>
  </netPrice>
  <requestedQuantity>6</requestedQuantity>
- <itemIdentification>
  <gtin>7702057075088</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="17">
- <netPrice>
  <amount currencyISOcode="">1,879.00</amount>
  </netPrice>
  <requestedQuantity>6</requestedQuantity>
- <itemIdentification>
  <gtin>7702057073930</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="18">
- <netPrice>
  <amount currencyISOcode="">15,599.00</amount>
  </netPrice>
  <requestedQuantity>6</requestedQuantity>
- <itemIdentification>
  <gtin>7702057298456</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="19">
- <netPrice>
  <amount currencyISOcode="">14,675.00</amount>
  </netPrice>
  <requestedQuantity>6</requestedQuantity>
- <itemIdentification>
  <gtin>7702132007362</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="20">
- <netPrice>
  <amount currencyISOcode="">10,458.00</amount>
  </netPrice>
  <requestedQuantity>6</requestedQuantity>
- <itemIdentification>
  <gtin>7702870001936</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="21">
- <netPrice>
  <amount currencyISOcode="">3,440.00</amount>
  </netPrice>
  <requestedQuantity>12</requestedQuantity>
- <itemIdentification>
  <gtin>7451079001635</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="22">
- <netPrice>
  <amount currencyISOcode="">4,703.00</amount>
  </netPrice>
  <requestedQuantity>12</requestedQuantity>
- <itemIdentification>
  <gtin>7702123830931</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="23">
- <netPrice>
  <amount currencyISOcode="">4,669.00</amount>
  </netPrice>
  <requestedQuantity>12</requestedQuantity>
- <itemIdentification>
  <gtin>7451079001543</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="24">
- <netPrice>
  <amount currencyISOcode="">3,555.00</amount>
  </netPrice>
  <requestedQuantity>12</requestedQuantity>
- <itemIdentification>
  <gtin>7702123824039</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="25">
- <netPrice>
  <amount currencyISOcode="">1,255.00</amount>
  </netPrice>
  <requestedQuantity>12</requestedQuantity>
- <itemIdentification>
  <gtin>7702132001230</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="26">
- <netPrice>
  <amount currencyISOcode="">5,503.00</amount>
  </netPrice>
  <requestedQuantity>12</requestedQuantity>
- <itemIdentification>
  <gtin>7702132003975</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="27">
- <netPrice>
  <amount currencyISOcode="">5,503.00</amount>
  </netPrice>
  <requestedQuantity>12</requestedQuantity>
- <itemIdentification>
  <gtin>7702132008307</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="28">
- <netPrice>
  <amount currencyISOcode="">5,503.00</amount>
  </netPrice>
  <requestedQuantity>12</requestedQuantity>
- <itemIdentification>
  <gtin>7702132007706</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="29">
- <netPrice>
  <amount currencyISOcode="">619.00</amount>
  </netPrice>
  <requestedQuantity>12</requestedQuantity>
- <itemIdentification>
  <gtin>7702057077051</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="30">
- <netPrice>
  <amount currencyISOcode="">4,498.00</amount>
  </netPrice>
  <requestedQuantity>12</requestedQuantity>
- <itemIdentification>
  <gtin>7702132002688</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="31">
- <netPrice>
  <amount currencyISOcode="">1,756.00</amount>
  </netPrice>
  <requestedQuantity>12</requestedQuantity>
- <itemIdentification>
  <gtin>7702057075101</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="32">
- <netPrice>
  <amount currencyISOcode="">2,853.00</amount>
  </netPrice>
  <requestedQuantity>12</requestedQuantity>
- <itemIdentification>
  <gtin>7702057076276</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="33">
- <netPrice>
  <amount currencyISOcode="">617.00</amount>
  </netPrice>
  <requestedQuantity>12</requestedQuantity>
- <itemIdentification>
  <gtin>7702208100508</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="34">
- <netPrice>
  <amount currencyISOcode="">4,112.00</amount>
  </netPrice>
  <requestedQuantity>15</requestedQuantity>
- <itemIdentification>
  <gtin>7703234100593</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="35">
- <netPrice>
  <amount currencyISOcode="">2,773.00</amount>
  </netPrice>
  <requestedQuantity>15</requestedQuantity>
- <itemIdentification>
  <gtin>7702123001447</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="36">
- <netPrice>
  <amount currencyISOcode="">4,617.00</amount>
  </netPrice>
  <requestedQuantity>20</requestedQuantity>
- <itemIdentification>
  <gtin>7702132003340</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="37">
- <netPrice>
  <amount currencyISOcode="">3,596.00</amount>
  </netPrice>
  <requestedQuantity>24</requestedQuantity>
- <itemIdentification>
  <gtin>7703381002085</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="38">
- <netPrice>
  <amount currencyISOcode="">2,081.00</amount>
  </netPrice>
  <requestedQuantity>24</requestedQuantity>
- <itemIdentification>
  <gtin>7703234101279</gtin>
  </itemIdentification>
  </lineItem>
-
<lineItem number="39">
- <netPrice>
  <amount currencyISOcode="">3,503.00</amount>
  </netPrice>
  <requestedQuantity>24</requestedQuantity>
- <itemIdentification>
  <gtin>7707172686119</gtin>
  </itemIdentification>
  </lineItem>
  </eanucc:order>
  </documentCommandOperand>
  </eanucc:documentCommand>
  </command>
  </eanucc:transaction>
</body>
  </eanucc:envelope>
Por favor, necesito saber que debo hacer.
Muchas gracias por su colaboración.
Hola!!
Gracias por tu respuesta, los campos que necesito son:
<netPrice>
  <amount currencyISOcode="">3,503.00</amount>
  </netPrice>
<requestedQuantity>24</requestedQuantity>
<itemIdentification>
  <gtin>7707172686119</gtin>
  </itemIdentification>
Pero entonces una pregunta, lo que me dices es que los archivos xml que se pueden convertir a dbf, son sólo los archivos generados desde visual fox??
Bueno, yo también tengo el archivo en txt, pero no sé cómo leerlo para pasarlo a dbf por medio de programación, porque en otras ocasiones he convertido txt's a dbf's pero utilizando el asistente de visual fox y además los archivos que antes he convertido, vienen en columnas, separados por espacios, comas o tabulaciones, pero este que tengo esta vez no es así y necesito poner una opción en el programa que cuando el usuario le de click lea el archivo txt y lo pase a un cursor existente en el programa.
Este es el archivo en txt:
ENC,7707185370005,7709999008174,142-131,220,142-131,ORDERS
DTM,201002020000,201002180000,201002030000
FTX,CP16-AGOTADO O RUPT
BYOC,7707185370005,7707185371422
SUSR,7709999008174
DPGR,7707185371422
IVAD,7707185370005
ITO,7707185371422
PATPCD,9,30,0
TOD,FOB
LIN,1,7702057071813,EN,296006
QTY,2,NAR
PRI,16679,16679
PAC,2,CS
TAXMOA,00000000000000000
LIN,2,7702057124021,EN,280580
QTY,2,NAR
PRI,6006,6006
PAC,2,CS
TAXMOA,00000000000000000
LIN,3,7707172687802,EN,455941
QTY,2,NAR
PRI,26391,26391
PAC,2,CS
TAXMOA,00000000000000000
LIN,4,7702132007041,EN,13992
QTY,2,NAR
PRI,15620,15620
PAC,2,NE
TAXMOA,00000000000000000
LIN,5,77014535,EN,245086
QTY,3,NAR
PRI,5597,5597
PAC,3,CS
TAXMOA,00000000000000000
LIN,6,7702057168049,EN,258804
QTY,4,NAR
PRI,5224,5224
PAC,4,CS
TAXMOA,00000000000000000
Muchas gracias por su colaboración.
En este caso no te serviría el append from, entonces te sugiero que extraigas el contenido del archivo a una cadena de texto de la siguiente manera:
Local cnControladorArch, nTamaño, cCadena
cnControladorArch = FOPEN("test.txt")
* Busca hasta el final del archivo para determinar el número
* de bytes en el archivo.
nTamaño =  FSEEK(cnControladorArch, 0, 2)    && Lleva el puntero a EOF.
IF nTamaño <= 0
  * Si el archivo está vacío, muestra un mensaje de error.
  WAIT WINDOW "Este archivo está vacío." NOWAIT
ELSE
  * Si el archivo no está vacío, el programa almacena su contenido
* en una variable de cadena, para después trabajar con ella
* en Visual FoxPro.
  = FSEEK(cnControladorArch, 0, 0)     && Mueve el puntero a BOF.
cCadena = FREAD(cnControladorArch, nTamaño)
ENDIF
= FCLOSE(cnControladorArch)  
Luego puedes trabajar con el contenido de la cadena extraída del archivo, para eso puedes utilizar funciones como substr, at o rat todo dependiendo de cómo necesites extraer la información para luego anexarla a una tabla o cursor obviamente utilizando insert o append blank.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas