Рубрики
Uncategorized

Еще один способ заставить PHP Читать Импорт данных больших файлов XML

Автор оригинала: David Wong.

По рабочим причинам мне приходится работать с командой второй силы. Я сказал просто экспортировать файл 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”, идея этой статьи должна быть тем, что вам нужно.