Здравствуйте! Записался на ваш курс, но не понимаю как произвести оплату. Надо ли писать заявление и, если да, то куда отправлять? как я получу диплом о профессиональной переподготовке? |
Взаимодействие PHP и XML
Взаимодействие PHP и XML посредством DOM XML
Что происходит, если взаимодействие PHP и XML осуществляется с помощью объектной модели стандарта DOM? Модуль DOM XML определяет в PHP несколько классов, таких как DomNode, DomDocument, DomElement, DomText и DomAttribute, большинство из которых идут из ядра стандарта DOM. Почти для всех классов (в частности, для перечисленных выше) класс DomNode является родительским, поэтому его свойства и методы наследуются всеми остальными классами.
Если рассмотреть произвольный XML -документ, то классу DomDocument будет соответствовать сам этот документ, классу DomElement – каждый XML -тег, классу DomAttribute – атрибуты тегов, а классу DomText – содержание XML- элементов. В то же время классу DomNode будет соответствовать каждый из перечисленных элементов XML -документа.
Рассмотрим коллекцию, содержащую описания персон. Если каждую из них мы описываем с помощью таких характеристик, как фамилия, имя, дата рождения и электронный адрес, то структура коллекции " Личности ", где хранится информация обо всех известных нам персонах, может быть представлена следующим образом.
<?xml version="1.0"?> <collection> <person id="10"> <name> <first>Nick</first> <last>Petrov</last> </name> <birth> <day>23</day> <month>12</month> <year>89</year> </birth> <email> nick@ngs.ru </email> </person> <person id="20"> <name> <first>Bob</first> <last>Ivanov</last> </name> <birth> <day>03</day> <month>05</month> <year>90</year> </birth> <email> bob@ngs.ru </email> </person> </collection>Пример 14.2. Коллекция Личности в виде XML-файла (persons.xml)
В дальнейшем, приводя примеры, мы будем использовать этот файл.
Нам необходимо научиться читать, добавлять, изменять и искать информацию, находящуюся в XML -файлах.
Перевод данных XML-файла в объекты и классы PHP
Первое, что нужно сделать, если мы хотим работать с XML -данными в PHP при помощи расширения DOM XML, это перевести имеющиеся данные в объекты и классы DOM. Это можно сделать несколькими способами.
- С помощью функции domxml_open_mem .
Синтаксис:
В качестве параметра эта функция принимает строку str, содержащую XML -документ. Результатом ее работы является объект класса, называемого DOMDocument.object domxml_open_mem (string str)
- С помощью функции domxml_open_file .
Синтаксис:
Эта функция обрабатывает XML -файл, имя которого задается параметром filename, и переводит его в объект класса DOMDocument. Доступ к файлу производится только на чтение.object domxml_open_file (string filename)
Такие функции, как domxml_open_mem() и domxml_open_file() , как правило, нужно вызывать перед вызовом любых других функций, связанных с расширением DOM.
Эти функции преобразуют XML -файл в дерево объектов. К таким объектам можно обращаться с помощью различных методов. В частности, для выделения корневого элемента используется метод DomDocument->document_element() .
Еще существует функция domxml_new_doc(string version) , которая создает новый пустой XML -документ. Ее параметром является номер версии создаваемого документа. Но ее мы касаться не будем, а будем считать, что XML -файл уже создан.
<? //считываем файл "persons.xml" в строку $xmlstr = join('',file('persons.xml')); // переводим строку с xml-файлом // в дерево объектов. Если операция // прошла неудачно, то выводим // ошибку и прекращаем работу. if(!$dom = domxml_open_mem($xmlstr)) { echo "Ошибка при разборе документа\n"; exit; } // можно посмотреть, как выглядит // этот объект print_r($dom); echo "<hr>"; // выделяем корневой элемент // дерева объектов. // В нашем случае это будет // элемент <collection> $root = $dom->document_element(); print_r($root); echo "<hr>"; ?>Пример 14.3. Перевод XML-файла в дерево объектов PHP и выделение корневого элемента
Итак, каждому элементу XML -файла мы поставили в соответствие какой-то объект. Теперь нужно научиться перемещаться по дереву объектов и обращаться с этими объектами: получать и изменять их значения, находить их потомков и предков, удалять объекты.