&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 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 решает все мои задачи в web 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 решает все мои задачи в web 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