Перегнать XML в mySQL при помощи PHP

pylyp

Новичок
Я новичек, ногами сильно не бейте :)...

Есть куча XML-файлов общим объемом около 400 мб. Из них надо выбрать определенные данные и внести их в mySQL

<?xml version="1.0" encoding="UTF-8"?>
<citizens>
<citizen>
<name>Khiechan07</name>
<party></party>
<military-skills>
<military-skill>
<points>35.000</points>
</military-skill>
</military-skills>
<wellness>0.00</wellness>
<date-of-birth>2009-05-14 13:52:32</date-of-birth>
<level>1</level>
<citizenship>
<region>
<id>645</id>
</region>
<country>
<id>67</id>
</country>
</citizenship>
<experience-points>340</experience-points>
<id>1482987</id>
</citizen>
...
</citizens>
Для разбора XML, я использую такую конструкцию (пока с выводом на экран, потом это будет заполнение базы)

PHP:
<?php
$xml = simplexml_load_file('citizens.xml');
$num = count ($xml->citizen);
for ($i = 0; $i < $num; $i++)
{
echo $xml->citizen[$i]->id;
echo $xml->citizen[$i]->name;
echo $xml->citizen[$i]->experience-points;
echo "<br/>";
}
?>

Вопрос 1.
Насколько эффективен такой способ обработки данных? Есть ли альтернативы?

Вопрос 2.
Есть проблема с experience-points из-за минуса в названии элемента. Такое обозначение в XML. В PHP выдает "0" вместо значения элемента. Как это обойти? Я додумался только до предварительной замены в XML, но как то это топорно...
 

pylyp

Новичок
Похожий вопрос.

Надо получить значение
$xml->citizen[$i]->military-skills->military-skill->points
причем
military-skills->military-skill->points
меняется для выбора различных параметров и занесено в $value[1]

$sql = $xml->citizen[$i]->$value[1]
не работает.

Как правильно написать?
 
Сверху