&reftitle.examples;
Основы работы с модулем SimpleXML Часть примеров этого руководства включает XML-строку. Чтобы не повторять строку в каждом примере, её помещают в файл, который и включают в каждый пример. Строка приведена в следующем примере. Кроме этого можно создать XML-документ и считывать его функцией simplexml_load_file. Файл example.php с XML строкой PHP: Появление Парсера Ms. Coder Onlivia Actora Mr. Coder El ActÓr Таким образом, это язык. Это всё равно язык программирования. Или это скриптовый язык? Обо всём рассказывает этот документальный фильм, похожий на фильм ужасов. PHP решает все мои проблемы в вебе 7 5 XML; ?> ]]> Пользоваться модулем SimpleXML очень просто! Попробуйте получить какую-нибудь строку или число из базового XML-документа. Получение части документа <literal><plot></literal> movie[0]->plot; ?> ]]> &example.outputs; В PHP получить доступ к элементу в XML-документе, который содержит в названии недопустимые символы (например, дефис), можно путём заключения имени элемента в фигурные скобки и апострофы. Получение строки <literal><line></literal> movie->{'great-lines'}->line; ?> ]]> &example.outputs; Доступ к неуникальным элементам в SimpleXML В том случае, если существует несколько экземпляров дочерних элементов в одном родительском элементе, нужно применять стандартные методы итерации. , мы отдельно выведем имя . */ foreach ($movies->movie->characters->character as $character) { echo $character->name, ' играет ', $character->actor, PHP_EOL; } ?> ]]> &example.outputs; Свойства ($movies->movie в предыдущем примере) — не массивы. Это итерируемый объект в виде массива. Работа с атрибутами До сих пор мы только получали названия и значения элементов. SimpleXML также умеет получать доступ к атрибутам элемента. Получить доступ к атрибуту элемента можно так же, как к элементам массива (array). первого фильма. * Так же выведем шкалу оценок. */ foreach ($movies->movie[0]->rating as $rating) { switch((string) $rating['type']) { // Получение атрибутов элемента по индексу case 'thumbs': echo $rating, ' thumbs up'; break; case 'stars': echo $rating, ' stars'; break; } } ?> ]]> &example.outputs; Сравнение элементов и атрибутов с текстом Для сравнения элемента или атрибута со строкой или для передачи в функцию в качестве текста, необходимо привести его к строке через оператор приведения (string). В противном случае PHP будет рассматривать элемент как объект. movie->title == 'PHP: Появление Парсера') { print 'Мой любимый фильм.'; } echo htmlentities((string) $movies->movie->title); ?> ]]> &example.outputs; Сравнение двух элементов Два элемента SimpleXMLElements признаются разными, даже если они указывают на один и тот же объект. ]]> &example.outputs; XPath — язык запросов к элементам XML-документа SimpleXML включает встроенную поддержку языка XPath. Поиск элементов <character>: xpath('//character') as $character) { echo $character->name, ' играет ', $character->actor, PHP_EOL; } ?> ]]> Запись «//» работает как подстановочный знак, или шаблон. Чтобы указать абсолютный путь, один слеш опускают. &example.outputs; Установка значений Данные в SimpleXML не обязаны быть неизменяемыми. Объект разрешает манипулировать всеми элементами. movie[0]->characters->character[0]->name = 'Miss Coder'; echo $movies->asXML(); ?> ]]> &example.outputs; PHP: Появление Парсера Miss Coder Onlivia Actora Mr. Coder El ActÓr Таким образом, это язык. Это всё равно язык программирования. Или это скриптовый язык? Обо всём рассказывает этот документальный фильм, похожий на фильм ужасов. PHP решает все мои задачи в вебе 7 5 ]]> Добавление элементов и атрибутов SimpleXML умеет легко добавлять дочерние элементы и атрибуты. movie[0]->characters->addChild('character'); $character->addChild('name', 'Mr. Parser'); $character->addChild('actor', 'John Doe'); $rating = $movies->movie[0]->addChild('rating', 'PG'); $rating->addAttribute('type', 'mpaa'); echo $movies->asXML(); ?> ]]> &example.outputs; PHP: Появление Парсера Ms. Coder Onlivia Actora Mr. Coder El ActÓr Mr. ParserJohn Doe Таким образом, это язык. Это всё равно язык программирования. Или это скриптовый язык? Обо всём рассказывает этот документальный фильм, похожий на фильм ужасов. PHP решает все мои задачи в вебе 7 5 PG ]]> Взаимодействие с DOM PHP умеет преобразовывать XML-узлы из SimpleXML в формат DOM и наоборот. Пример показывает, как можно изменить DOM-элемент в SimpleXML. loadXML('чепуха'); if (!$dom) { echo 'Ошибка при разборе документа'; exit; } $books = simplexml_import_dom($dom); echo $books->book[0]->title; ?> ]]> &example.outputs;
Работа с ошибками XML Работа с ошибками XML при загрузке документов — простая задача. Функциями модуля libxml можно подавить все XML-ошибки при загрузке документа и затем обработать их. Объект libXMLError, который возвращает функция libxml_get_errors, содержит ряд свойств, в том числе сообщение, номер строки и колонку (позицию) этой ошибки. Загрузка XML-строки с неправильным синтаксисом "); if (!$sxe) { echo "Ошибка загрузки XML\n"; foreach(libxml_get_errors() as $error) { echo "\t", $error->message; } } ?> ]]> &example.outputs; ' expected Opening and ending tag mismatch: xml line 1 and broken Premature end of data in tag broken line 1 ]]>
&reftitle.seealso; libxml_use_internal_errors libxml_get_errors