Преобразование XML в ассоциативный массив в PHP

Convert Xml Associative Array Php



XML (Extensible Markup Language) - это один из типов языка разметки, который используется для хранения данных в удобочитаемом формате. Он отличается от других языков разметки. Каждый тег этого языка определяется пользователем. Использование XML - лучшее решение для хранения небольшого количества данных, когда вы не хотите использовать какую-либо базу данных для хранения данных. К данным из XML-документа можно легко получить доступ и использовать в любом веб-приложении с помощью сценария PHP. В этом руководстве показано, как XML-документ можно проанализировать и сохранить в ассоциативный массив.

Необходимые функции

Некоторые встроенные функции используются для преобразования содержимого XML в ассоциативный массив PHP. Назначение различных функций объясняется ниже.







file_get_contents ():



Эта функция возвращает строковые данные путем преобразования любых данных XML. В качестве аргумента он принимает любое имя файла XML.



simplexml_load_string ():





Эта функция возвращает объект XML путем преобразования строковых данных XML. Он принимает строковые данные XML в качестве аргумента.

simplexml_load_file ():



Эта функция возвращает объект XML путем преобразования содержимого файла XML. В качестве аргумента он принимает имя файла XML.

SimpleXMLElement ():

Он используется для создания объекта XML из данных XML. В качестве аргумента он принимает значение содержимого XML.

json_encode ():

Он возвращает объект JSON путем преобразования объекта XML. В качестве аргумента он принимает переменную объекта XML.

json_decode ():

Он возвращает ассоциативный массив PHP путем преобразования данных JSON. В качестве аргумента он принимает объектную переменную JSON.

Создать файл XML

Вам потребуется создать XML-файл или определить XML-данные в скрипте, чтобы знать способ преобразования XML-данных в ассоциативный массив PHP. Создайте XML-файл с именем course.xml со следующим содержимым и сохраните его в том месте, где находится сценарий PHP. Файл содержит дочерние элементы под родительским элементом. Итак, двумерный ассоциативный массив будет сгенерирован после преобразования следующего XML-файла в массив PHP.

course.xml

версиязнак равно'1.0'?>
>
>Веб-программирование>
>6 месяцев>
>
>
>Радость программирования на PHP>
>Алан Форбс>
>Plum Island>
>
>
>PHPИ MySQL от новичка до ниндзя
Том Батлер и Кевин Янк
SitePoint


Head First PHP и MySQL
Линн Бейли и Майкл Моррисон
О'Рейли


Пример-1: преобразование содержимого XML-файла в ассоциативный массив без проверки ошибок

Следующий сценарий показывает использование функций file_get_contents () и simplexml_load_string () для создания объекта XML. Здесь для преобразования, которое было создано ранее, используется файл course.xml. Затем функции json_encode () и json_decode () используются для получения ассоциативного массива после преобразования содержимого XML-файла. Если в содержимом XML нет ошибок, следующий скрипт не покажет никаких ошибок. Здесь

  тег используется для печати массива в отформатированном виде.



// Определяем существующий файл XML
$ xml знак равно 'курсы.xml';

// Считываем полное содержимое XML-файла как XML-строку
$ xmlData знак равно file_get_contents ($ xml);

// Преобразование строковых данных XML в объект XML
$ xmlObject знак равно simplexml_load_string ($ xmlData);

// Преобразование объекта XML в объект JSON
$ jsonObject знак равно json_encode ($ xmlObject);

// Преобразование объекта JSON в ассоциативный массив
$ assArray знак равно json_decode ($ jsonObject, правда);

// Распечатываем структуру ассоциативного массива
выбросил '

';  
print_r ($assArray);
echo '

'
;

?>

Выход:

Следующий вывод появится после выполнения сценария PHP. Здесь двумерный массив создается на основе содержимого файла XML, course.xml.

Пример-2: преобразование содержимого XML-файла в ассоциативный массив с ошибкой проверки

Лучше проверить ошибку при преобразовании XML в ассоциативный массив. Это поможет кодеру отладить код, если в скрипте реализована проверка ошибок. В следующем сценарии показаны способы преобразования содержимого XML-файла в ассоциативный массив с помощью функции simplexml_load_file () с обработкой ошибок. Функция libxml_use_internal_errors () используется со значением TRUE для включения обработки ошибок. Если содержимое XML-файла, которое используется в сценарии, содержит какую-либо ошибку, тогда функция simplexml_load_file () вернет false, а сообщение об ошибке будет напечатано с использованием функции libxml_get_errors (). Если в XML-файле нет ошибок, содержимое файла будет правильно преобразовано в двумерный ассоциативный массив.



// Включение обработки ошибок пользователя
libxml_use_internal_errors (ПРАВДА);

// Создаем объект XML
$ objXml знак равно simplexml_load_file ('курсы.xml');

// Ошибка печати, если объект XML возвращает false
если ($ objXml === ЛОЖНЫЙ) {
выбросил «При синтаксическом анализе XML-файла произошли ошибки. п';
для каждого( libxml_get_errors () в качестве $ ошибка) {
выбросил $ ошибка->сообщение;
}
выход ;
}

// Преобразование объекта XML в объект JSON
$ objJson знак равно json_encode ($ objXml);
// Преобразование объекта JSON в ассоциативный массив
$ assarr знак равно json_decode ($ objJson, ПРАВДА);

// Распечатываем структуру ассоциативного массива
выбросил '
';  
print_r ($assarr);
echo '
'
;

?>

Выход:

Следующий вывод появится после выполнения сценария PHP. Здесь в файле XML нет ошибки. Итак, двумерный массив сгенерирован, как и в предыдущем примере, на основе содержимого файла XML, course.xml.

Пример-3: преобразование содержимого XML в ассоциативный массив

Следующий сценарий показывает способ преобразования данных XML в ассоциативный массив с помощью функции SimpleXMLElement (). В сценарии содержимое XML сохраняется в переменной с именем $ xml, которая используется в качестве аргумента функции SimpleXMLElement (). Затем функции json_encode () и json_decode () используются для получения ассоциативного массива после преобразования содержимого XML-файла.



// Определяем переменную XML
$ xml знак равно <<


[электронная почта защищена]

12 / А, Дханмонди
Дакка



[электронная почта защищена]

156, Мотив
Дакка



[электронная почта защищена]

21 / Б, Могбазар
Дакка



XML
;

// Создаем объект XML
$ xmlObject знак равно новыйSimpleXMLElement($ xml);
// Создаем объект JSON
$ jsonObject знак равно json_encode ($ xmlObject);
// Преобразование объекта JSON в ассоциативный массив
$ assArray знак равно json_decode ($ jsonObject, правда);

// Распечатываем структуру ассоциативного массива
выбросил '
';  
print_r ($assArray);
echo '
'
;

?>

Выход:

Следующий вывод появится после выполнения сценария PHP. Здесь двумерный массив создается на основе содержимого переменной XML $ xml.

Заключение:

В этом руководстве было показано три различных способа преобразования содержимого XML в ассоциативный массив. Это поможет читателям узнать, как работать с данными XML и легко анализировать данные из содержимого XML с помощью сценария PHP.