Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Заметки Дизайнера" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Работа с XML
Содержание Вниманию читателей!Отдельные выпуски рассылки в той или иной мере взаимосвязаны; особенно, это относится к материалам практических занятий. С предыдущими выпусками Вы можете ознакомиться:
# # # Вы также можете подписаться на рассылку "PHP 5 для начинающих". PHP 6 уже в разработке!Еще в ноябре 2005 года на встрече в Париже разработчики обсудили новые возможности следующей, шестой, версии PHP. Интересует ли Вас, какой будет эта версия? Примите участие в опросе, который проводится на сайте рассылки. http://pterodactyl.l2p.net/e107/ [опрос на английском языке: PHP 6: Are you interesting in? (PHP 6: Вы зантересованы?) - YES (ДА) - NO (НЕТ)] |
PHP 5: Новые возможности.The PterodactylCopyright 2006 Pterodactyl's School Copyright 2006 Pterodactyl's School. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". 12.05.2006
Аннотация Работа с XML документами в PHP 5 на примере использования SimpleXML Functions. Открытие, просмотр, изменение и сохранение данных. ВниманиеДля успешного изучения изложенного материала желательно наличие хотя бы поверхностного представления об XML. Использование XML, в частности, при создании сайтов, приобретает все большее распространение. Естественно, что PHP обладает инструментами для работы с XML. Еще в PHP 4 (и даже частично в PHP 3) для работы с XML файлами поддерживались технологии SAX и DOM (XML Parser Functions и DOM XML Functions соответственно). Однако, первая из них была весьма трудоемкой, а вторая требовала значительных ресурсов (памяти). ЗамечаниеВ PHP 5 вместо DOM XML Functions включены DOM Functions. В PHP 5 поддержка работы с XML была не только существенным образом обновлена, но и значительно расширена. В частности, поддерживаются SimpleXML Functions, которые мы вскоре рассмотрим подробнее, и XMLReader Functions. Включены также несколько экспериментальных расширений. ЗамечаниеНекоторые из перечисленных возможностей доступны начиная с версии PHP 5.1; некоторые требуют дополнительной активации. Кроме того, широкие возможности для работы с XML предоставляют многочисленные пакеты PEAR. Несомненными достоинствами данного расширения является простота его использования и доступность по умолчанию. В процессе дальнейшего изучения мы будет использовать следующий пример XML кода. Расширение SimpleXML предопределяет класс ПодсказкаКак всегда, определенное представление об этом классе можно получить с помощью уже известного нам метода рефлексии. ReflectionClass::export('SimpleXMLElement'); Существует три пути для создания объекта класса Загрузка XML файла. Для создания нового объекта $example = simplexml_load_file('example.xml'); Загрузка строки с XML кодом. Для создания нового объекта $example = simplexml_load_string($example); Импорт $example = simplexml_import_dom(new DomDocument); Созданный объект Для понимания принципов работы с объектом достаточно знать следующие четыре простых правила [3].
Доступ к наборам элементов. Корневой элемент XML документа в нашем примере содержит два элемента var_dump($example); object(SimpleXMLElement)#1 (1) { ["node"]=> array(2) { [0]=> object(SimpleXMLElement)#2 (2) { ["@attributes"]=> array(1) { ["id"]=> string(1) "1" } ["subnode"]=> string(3) "Foo" } [1]=> object(SimpleXMLElement)#3 (3) { ["@attributes"]=> array(1) { ["id"]=> string(1) "2" } ["subnode"]=> string(3) "Bar" ["comment"]=> string(15) "Just a comment." } } } foreach ($example->node as $node) { print_r($node); } SimpleXMLElement Object ( [@attributes] => Array ( [id] => 1 ) [subnode] => Foo ) SimpleXMLElement Object ( [@attributes] => Array ( [id] => 2 ) [subnode] => Bar [comment] => Just a comment. ) ПодсказкаОбратите внимание на то, что элементы Доступ к отдельным элементам. Доступ к отдельным элементам из набора возможен с помощью числовых индексов. print_r($example->node[0]); SimpleXMLElement Object ( [@attributes] => Array ( [id] => 1 ) [subnode] => Foo ) print_r($example->node[1]); SimpleXMLElement Object ( [@attributes] => Array ( [id] => 2 ) [subnode] => Bar [comment] => Just a comment. ) ПодсказкаЕсли необходимо получить самый первый элемент в наборе (или элемент в наборе является единственным), то допустимо использовать соответствующую переменную без числового индекса. print_r($example->node); SimpleXMLElement Object ( [@attributes] => Array ( [id] => 1 ) [subnode] => Foo ) print_r($example->node[1]->comment); SimpleXMLElement Object ( [@attributes] => Array ( [foo] => bar [bar] => foo ) [0] => Just a comment. ) Доступ к атрибутам. Доступ к атрибутам элементов осуществляется с помощью строковых индексов. print_r($example->node[1]['id']); SimpleXMLElement Object ( [0] => 2 ) Доступ к текстовым данным. Как видно из предыдущих примеров, структура XML документа представлена серией вложенных друг в друга объектов класса var_dump($example->node[0]); object(SimpleXMLElement)#4 (2) { ["@attributes"]=> array(1) { ["id"]=> string(1) "1" } ["subnode"]=> string(3) "Foo" } print_r($example->node[0]->subnode[0]); SimpleXMLElement Object ( [0] => Foo ) Для того, чтобы получить доступ непосредственно к текстовым ( print_r((string) $example->node[0]->subnode[0]); Foo ПодсказкаТакое преобразование автоматически производится при выводе данных с помощью print $example->node[0]->subnode[0]; Foo print $example->node[1]['id']; 2 Доступ к дочерним элементам. Доступ ко всем дочерним элементам данного элемента может быть получен с помощью метода foreach($example->node[1]->children() as $child) { print_r($child); } SimpleXMLElement Object ( [0] => Bar ) SimpleXMLElement Object ( [@attributes] => Array ( [foo] => bar [bar] => foo ) [0] => Just a comment. ) Доступ ко всем атрибутам. Доступ ко всем атрибутам данного элемента может быть получен с помощью метода foreach($example->node[1]->comment[0]->attributes() as $attribute) { print_r($attribute); } SimpleXMLElement Object ( [0] => bar ) SimpleXMLElement Object ( [0] => foo ) Метод foreach($example->xpath('//node') as $foo) { print_r($foo); } SimpleXMLElement Object ( [@attributes] => Array ( [id] => 1 ) [subnode] => Foo ) SimpleXMLElement Object ( [@attributes] => Array ( [id] => 2 ) [subnode] => Bar [comment] => Just a comment. ) Структура данных XML документа может быть не только просмотрена, но и модифицирована. $example->node[1]->comment = 'It is just a dummy comment.'; print $example->node[1]->comment; It is just a dummy comment. После просмотра и изменения данных представляется логичным их сохранение. Такую возможность предоставляет метод $example->asXML('example.xml'); Метод ПодсказкаЕсли вызвать метод print $example->node[1]->comment->asXML(); <comment foo="bar" bar="foo">It is just a dummy comment.</comment> [1] PHP Manual. Gabor Hojtsy. 28-02-2006. Copyright 1997-2006 the PHP Documentation Group. http://www.php.net/manual/en/. |
В избранное | ||