Extraer informacion de un XML


([N1] leonardo daniel velazquez fuentes) #1

Hola a todos, gracias a la recomendacion de usar WireShark para ver que es lo que enviaba y recibia mi programa en .net pude al fin estructurar correctamente el XML, para ser usado en el webservice contratado, probado primero en la Chrome APP (RestInSoap) y posteriormente en Velneo, al fin tengo el XML…

Ahora necesito la forma de leer esos datos e irlos bajando a unas tablas en Velneo…

Este es el Riduculo, extenso y super documentado ejemplo de la clase VXMLReader que hay en velneo


VXmlReader xml;
xml.setFile( myVFile );

while (!xml.atEnd())
{
   xml.readNext();
    … // procesar
};
if (xml.hasError())
{
   … // manejar el error
};

y esto que ??? van decir otra vez quejas… pero es que lees, que incitan tanto a los programadores de Visual FoxPro (ejemplo), de que se cambien a Velneo, pero la documentacion no es ni la mitad de buena como lo es en otras plataformas…

Lo mismo me paso con el XMLHttpRequest… Soporte me envio a otra pagina para ver un ejemplo, haganme el favor.! en fin…! al fin lo logre…

Adjunto el XML obtenido para ver si alguien me puede explicar con que funciones y como leer esos datos, debo extrer algunos datos que ya vienen fijos como Total de millas, minutos del recorrido, millas de cuota que esta en la seccion results dentro de results, debere recorrer la seccion DrivingDirections para ver por donde paso el camion asi como sus millas, TripSummary que es los tiempos para cada ciudad, MapPoints que es la lista de las latitudes y longitudes, para poder dibujar un mapa en Google Maps (directions).

ProMiles_prueba.xml (479 KB)


([N1] wikan) #2

La gracia es que es el mismo ejemplo que proporciona Qt.

Donde pone procesar vete usando las funciones: (si no mal recuerdo)
name que te devuelve por ejemplo TripMiles, TripMinutes, etc
Con un if vas procesando según el tipo de dato.

Si no prueba con text, pero creo con name vale.

En principio veo que no hay atributos, asi que con eso tendrías.

Los xml se leen de manera secuencial, así que tienes que ir usando el bucle y procesando según la línea, de ahí la función readNext().
En el caso que quieras optimizar está skipCurrentElement para que si el elemento no es conocido saltas todos los hijos incluidos.


([N3] pacosatu) #3

Hola leonardo daniel velazquez fuentes.

Me alegro que hayas conseguido crear un XML válido para el webservice que estabas probando.
Queda claro que XML no es más que texto plano, cuyo contenido refleja la estructura de una información más o menos compleja.

Velneo no está dispuesto a facilitarnos la tediosa labor de parsear los ficheros XML, debido a la poca información y herramientas disponibles.

Tienes un ejemplo sencillo de la función Javascript VXmlReader en la Base de conocimiento, que te puede servir como punto de partida.

Si obtienes resultados, lo compartes en el foro, porque el parseo de documentos XML no es una ciencia exacta y se aprende resolviendo muchos ejemplos.

Saludos
Paco Satué