По рабочим причинам мне приходится работать с командой второй силы. Я сказал просто экспортировать файл SQL непосредственно мне, и они настояли на экспорте XML-файла. Или, может быть, у них есть свои причины, но я все равно хочу, чтобы они заставили команду, ленивую, понять, от чего они страдают.
Я думаю, что MySQL должен поддерживать импорт XML. Я забыл, каковы были результаты поиска. В любом случае, я, наконец, решил написать свой собственный PHP для создания инструкции SQL.
Структура данных XML примерно такова:
Документы очень большие. Есть много. <объект> То есть записей много, но данные в одной записи не очень велики.
Существует множество классов и функций для работы с XML в PHP. См.: http://|/php .net/руководство/ж/ссылки. xml .php Среди них наиболее часто используемым должен быть XmlReader 、 SimpleXML (Чисто личное чувство, без поддержки данных) XmlReader Он читается одно предложение за другим в виде потока файлов. Он в основном используется для обработки больших XML-файлов, но его трудно использовать. Симплексml Он намного проще в использовании, но не может обрабатывать большие объемы XML-данных.
Сначала я только пользовался им. XmlReader Для импорта, конечно, тоже можно импортировать, но вложено несколько слоев цикла и суждения. Если бы я не импортировал пакет данных позже, я бы подумал, что мог бы написать так.
Когда я импортировал во второй раз, я использовал комбинированный метод. XmlReader и SimpleXML , Потому что независимо от размера вашего XML-файла, куда могут попасть данные одной записи? (Я говорю об общей ситуации)
Когда я думаю об этом методе, код настолько лаконичен, что мне неловко его отправлять. Но для того, чтобы читатели этой статьи имели более интуитивное представление о простоте, позвольте мне иметь наглость приукрасить ее.
open(__DIR__ . '/company.xml');
while($xml->read()) {
If ($xml - > name ='object'and $xml - > nodeType == XMLReader:: ELEMENT) {// Enter object)
$inXml = $xml - > readOuterXML (); // Gets the current entire object content (string)
$inXml = simplexml_load_string ($inXml); // Converts to a SimpleXMLElement object
// Then without it, you can see how to save it to the database dump for $inXml.
var_dump($inXml);
}
// Continue reading until you enter the next object
}Вот и все, если ты все еще этим занимаешься. XmlReader Это слишком сложно использовать. SimpleXML Если вы не можете получить большие файлы, и вы изо всех сил пытаетесь найти “большие файлы для операций PHP XML”, идея этой статьи должна быть тем, что вам нужно.