Синтаксический парсер PHP SimpleXML
Расширение SimpleXML PHP предоставляет полный набор инструментов, который вы можете использовать для чтения, записи и анализа XML-документов в ваших PHP-приложениях.
Парсер SimpleXML
SimpleXML разработан для управления и извлечения данных из файлов XML. После применения SimpleXML организует содержимое XML-документа, чтобы вы могли получать информацию о различных элементах и их атрибутах. Вы даже можете добавить к элементу новые дочерние элементы и посчитать их.
Как следует из названия, PHP SimpleXML лучше всего подходит для небольших XML-файлов с простой структурой. Использование огромных документов может ухудшить его производительность. Однако, если файл, который вы хотите проанализировать, небольшой, SimpleXML поможет вам сделать это с меньшим количеством строк кода, чем другие парсеры.
SimpleXML: основные советы
- Расширение PHP SimpleXML позволяет получать доступ к данным XML и работать с ними.
- Этот парсер основан на дереве и предоставляет эффективный метод получения имени определенного элемента, атрибутов или текстового содержимого. Однако вы должны знать макет или структуру XML-документа, с которым вы работаете.
- Используя Simple XML, вы можете преобразовывать документы, написанные на PHP XML, в массивы или объекты.
- Он требует меньше строк кода, чем его альтернативы Expat и DOM.
- Он доступен на любом сервере, на котором установлен PHP.
Чтение XML-данных из строки
Когда наша работа требует, чтобы PHP читал данные XML-документа из строки, мы используем функцию с именем simplexml_load_string()
.
Представьте, что у нас есть переменная $my_data, содержащая данные XML. В следующем примере кода показано, как это будет выглядеть при первом объявлении:
Пример
Скопировать$my_data =
"<?xml version='1.0' encoding='UTF-8'?>
<note>
<to>You</to>
<from>Me</from>
<heading>The Game</heading>
<body>You lost it.</body>
</note>";
В приведенном ниже примере, функция PHP simplexml_load_string()
используется для чтения XML-данных прямо из ранее упомянутой переменной:
Пример
Попробуй сам »<?php
$xml_data = "<?xml version='1.0' encoding='UTF-8'?>
<note>
<to>You</to>
<from>Me</from>
<heading>The Game</heading>
<body>You lost it.</body>
</note>";
$xml = simplexml_load_string($xml_data) or die('Не удалось создать объект');
print_r($xml);
?>
Результат выполнения кода:
Чтобы поймать все ошибки и затем просмотреть их во время загрузки XML-файла PHP, вы можете использовать функции libxml
.
В следующем примере предпринимается попытка загрузить неработающую строку XML:
Пример
Попробуй сам »<?php
libxml_use_internal_errors(true);
$my_data =
"<?xml version='1.0' encoding='UTF-8'?>
<document>
<to>You</wrong>
<from>Me</wrong>
<heading>The Game</wrong>
<body>You lost it</wrong>
</document>";
$xml = simplexml_load_string($my_data);
if ($xml === false) {
echo "Failed to load XML: ";
foreach(libxml_get_errors() as $error) {
echo "<br>", $error->message;
}
} else {
print_r($xml);
}
?>
Результат выполнения кода:
Opening and ending tag mismatch: to line 3 and wrong
Opening and ending tag mismatch: from line 4 and wrong
Opening and ending tag mismatch: heading line 5 and wrong
Opening and ending tag mismatch: body line 6 and wrong
Чтение XML-данных из файла
Для чтения данных XML из файла используется функция PHP simplexml_load_file()
.
Для чтения мы используем XML-документ с именем file.xml. В приведенном ниже примере вы можете просмотреть его содержимое:
Пример
Скопировать<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>You</to>
<from>Me</from>
<heading>The Game</heading>
<body>You lost it.</body>
</note>
Теперь давайте посмотрим, как можно использовать функцию simplexml_load_file()
для чтения XML-данных из файла:
Пример
Попробуй сам »<?php
$xml = simplexml_load_file("file.xml") or die("Не удалось создать объект");
print_r($xml);
?>
Результат выполнения кода:
SimpleXML: Резюме
- SimpleXML - очень удобный выбор, поскольку он встроен в PHP начиная с версии 5 и доступен на всех серверах, поддерживающих PHP.
- Это парсер на основе дерева. Следовательно, вам необходимо понимать структуру документа, который вы собираетесь анализировать. Элемент в XML-документе классифицируется как SimpleXMLElement.
- SimpleXML позволяет обрабатывать XML-файлы как полезные структуры данных: вы можете легко извлекать определенное содержимое, атрибуты или имена элементов. По сути, он превращает PHP XML в массив.
- По сравнению с парсерами Expat или DOM, ему требуется меньше строк кода для правильного анализа XML-данных PHP.