Convertir XML a tablas MySQL

8

Tengo un archivo XML grande en el siguiente formato y necesito convertir este archivo en una tabla MySQL. Por favor, hágame saber cómo puedo lograr esto?

~~~~~~~~~~

<host starttime="1392325468" endtime="1392325486"><status state="up" reason="user-set"/>
<address addr="192.168.0.2" addrtype="ipv4"/>
<hostnames>
</hostnames>
<ports><extraports state="filtered" count="2">
<extrareasons reason="no-responses" count="2"/>
</extraports>
<port protocol="udp" portid="22"><state state="open|filtered" reason="no-response" reason_ttl="0"/><service name="ssh" method="table" conf="3"/></port>
<port protocol="udp" portid="123"><state state="open|filtered" reason="no-response" reason_ttl="0"/><service name="ntp" method="table" conf="3"/></port>
</ports>
</host>

~~~~~~~~~~

Techno
fuente

Respuestas:

4

Para MySQL, puede usar la función ExtractData.

Si también está utilizando Windows (necesita Net Framework), esta herramienta antigua y desactualizada aún podría hacer el trabajo.

http://xmltodb.sourceforge.net/

Lo he usado en el pasado y convierte el archivo XML en comandos INSERT simples. Para archivos XML simples, en realidad funciona. Por supuesto, los comandos INSERT necesitarán algunos ajustes (cambio "o ') de acuerdo con el sabor db, pero el 90% del trabajo real se realiza con la herramienta.

Las herramientas comerciales como XMLSpy http://www.altova.com/xmlspy/database-xml.html tienen una funcionalidad similar (puede probar las ediciones de prueba).

Incluso puede intentar importar el archivo a MS Excel y luego exportarlo a CSV para importarlo a la base de datos MySQL. MS Excel tiene una buena característica de mapas XML que pueden asignar atributos y entidades XML a columnas. Lo probé y funcionará fácilmente con un XML bien formateado como el tuyo.

Alexandros
fuente