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'?>>
Том Батлер и Кевин Янк
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.