Существует реальное преимущество использования LOAD XML в скорости импорта XML в вашу базу данных. Тем не менее, существуют некоторые короткие ошибки LOAD XML, которые вы должны найти небольшие обходные пути. Два из которых вы найдете здесь.
LOAD XML не будет анализировать тег, похожий на этот ...
Он будет анализировать только тег, как ...
Поэтому вам нужно заменить строку на теге.
Нечего подобного будет достаточно ...
<?php
$string = file_get_contents("example.xml");
$string = str_replace('<visualfactor type="Body" factor="2.0000"/>','<visualfactor type="Body" factor="2.0000"></visualfactor>',$string);
file_put_contents("example.xml", $string);
?>
Глядя на тег, вы обнаружите еще одно ограничение в LOAD XML. Вы должны успешно сопоставить родительские и дочерние отношения, видимые в структуре XML, с вашей базой данных.
В теге есть дочерние теги. Следует сделать вывод, что это означает, что все данные в теге должны быть помещены в другую таблицу.
Это ниже не будет работать в вашем случае ...
ЗАГРУЗИТЕ ЛОКАЛЬНЫЙ ИНФИЛЬ XML 'C: \ path \ to \ xmlfile \ example.xml'
В СТОЛ mychildtable
Строки, идентифицируемые '';
Похоже, что данные находятся в атрибутах, и поэтому LOAD XML не будет работать. Вам нужно будет разобрать строку и вставить ее. Вот что я придумала ...
<?php
$xml = simplexml_load_file("example.xml");
#assumming that the parent tag is traits??
$array = $xml->traits;
foreach($array as $h => $info){
$key = $info->dbid
$sql = "Insert Into Table `childData` (`key`,`type`,`bonus`,`amount`,`scaling`,`subtype`,`visible`,damagetype`) VALUES ";
$effectArray = $xml->effects->effect;
foreach($effectArray as $i => $effectInfo){
$data = (array) $effectInfo->attributes();
$attributes = $data['@attributes']);
If($i ==0 ){
$sql .= "('{$key}', '{$attributes['type']}', '{$attributes['bonus']}', '{$attributes['amount']', '{$attributes['scaling']}', '{$attributes['subtype']}',{$attributes['visible']},{$attribute['damagetype']} )";
}else{
$sql .= ",('{$key}', '{$attributes['type']}', '{$attributes['bonus']}', '{$attributes['amount']', '{$attributes['scaling']}', '{$attributes['subtype']}',{$attributes['visible']},{$attribute['damagetype']} )";
}
}
}
?>