Convertendo XML em tabelas MySQL

8

Eu tenho um arquivo XML grande no formato a seguir e preciso converter esse arquivo em uma tabela MySQL. Por favor, deixe-me saber como posso fazer isso?

~~~~~~~~~~

<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
fonte

Respostas:

4

Para o MySQL, você pode usar a função ExtractData.

Se você também estiver usando o Windows (ele precisa do Net Framework), essa ferramenta antiga e desatualizada ainda poderá fazer o trabalho.

http://xmltodb.sourceforge.net/

Eu o usei no passado e ele converte o arquivo XML em comandos INSERT simples. Para arquivos XML simples, ele realmente funciona. É claro que os comandos INSERT precisarão de alguns ajustes (alteração "ou ') de acordo com o sabor do banco de dados, mas 90% do trabalho real é feito com a ferramenta.

Ferramentas comerciais como XMLSpy http://www.altova.com/xmlspy/database-xml.html têm uma funcionalidade semelhante (você pode tentar as edições de avaliação).

Você pode até tentar importar o arquivo para o MS Excel e exportar para CSV para importar para o banco de dados MySQL. O MS Excel possui um bom recurso de mapas XML que podem mapear atributos e entidades XML para colunas. Eu testei e ele funcionará facilmente com um XML bem formatado como o seu.

Alexandros
fonte