Преобразование 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>

~~~~~~~~~~

Техно
источник

Ответы:

4

Для MySQL вы можете использовать функцию ExtractData.

Если вы также используете Windows (для этого требуется Net Framework), то этот старый и устаревший инструмент все еще может работать.

http://xmltodb.sourceforge.net/

Я использовал его в прошлом, и он преобразует файл XML в простые команды INSERT. Для простых файлов XML это действительно работает. Конечно, для команд INSERT потребуется некоторая подстройка (изменение или ') в соответствии с разновидностью db, но 90% фактической работы выполняется с помощью инструмента.

Коммерческие инструменты, такие как XMLSpy http://www.altova.com/xmlspy/database-xml.html, имеют аналогичную функциональность (вы можете попробовать пробные версии).

Вы даже можете попробовать импортировать файл в MS Excel, а затем экспортировать в CSV для импорта в базу данных MySQL. MS Excel имеет приятную особенность карт XML, которые могут отображать атрибуты и объекты XML в столбцах. Я протестировал его, и он легко будет работать с хорошо отформатированным XML-файлом, таким как ваш.

Александрос
источник