将XML转换为MySQL表


8

我有一个采用以下格式的大XML文件,我需要将此文件转换为MySQL表。请让我知道我该怎么做?

~~~~~~~~~~~

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

~~~~~~~~~~~

Answers:


4

对于MySQL,您可以使用ExtractData函数。

如果您还使用Windows(它需要Net Framework),那么这个旧的和过时的工具可能仍然可以完成工作。

http://xmltodb.sourceforge.net/

我过去使用过它,它将XML文件转换为普通的INSERT命令。对于简单的XML文件,它实际上可以工作。当然,INSERT命令需要根据数据库风格进行一些调整(更改“或”),但是实际工作的90%是使用该工具完成的。

诸如XMLSpy http://www.altova.com/xmlspy/database-xml.html之类的商业工具也具有类似的功能(您可以尝试使用试用版)。

您甚至可以尝试将文件导入MS Excel,然后导出为CSV导入MySQL数据库。MS Excel具有一个不错的功能XML映射,可以将XML属性和实体映射到列。我对其进行了测试,它可以轻松地与像您这样的格式良好的XML一起使用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.