Курс "Язык программирования PHP"
Шрифт:
Итак, каждому элементу XML-файла мы поставили в соответствие какой-то объект. Теперь нужно научиться перемещаться по дереву объектов и обращаться с этими объектами: получать и изменять их значения, находить их потомков и предков, удалять объекты.
Обход дерева объектов
Для получения значения текущего узла (вне зависимости от его типа) используют метод DomNode->node_value или DomNode->get_content для получения содержимого узла.
Для получения значения атрибута используется метод DomElement->get_attribute (attr_name). А метод DomNode->child_nodes возвращает массив потомков данного узла.
Для того чтобы сделать обход дерева объектов, полезно еще уметь различать объекты по типам, т.е. определять, является ли узел элементом (тегом), текстом, атрибутом и т.п. Для этого используются специальные константы. XML_ELEMENT_NODE определяет, является ли узел элементом, XML_ATTRIBUTE_NODE определяет, является ли узел атрибутом, и XML_TEXT_NODE определяет, является ли узел куском текста. Эти константы имеют целочисленные значения 1, 2 и 3 соответственно. Использование этих констант полезно, поскольку переводы строки, применяемые для удобочитаемости XML-файлов, тоже становятся узлами.
Итак, мы научились обходить дерево XML. Теперь можно попытаться что-нибудь найти в XML-файле. Правда, делать это не совсем удобно опять же из-за переносов строк, которые мы использовали при написании XML-файла. Пусть наш XML-файл записан в строку, а точнее, в нем есть следующая строка:
Тогда в наш предыдущий пример вставим (после вывода на экран полученных массивов) строчку для поиска электронного адреса Ивана Иванова.
Добавление новых элементов в XML-документ
Далее разберем задачу, как можно добавить в нашу базу данных новую личность средствами php.
Сначала нужно скопировать описание личности (считаем, что все личности описываются с помощью стандартного набора характеристик, как в файле persons.xml). Это делается с помощью метода DomNode->clone_node. Таким образом, мы клонируем элемент <person> и все его внутренние элементы (содержание тегов не копируется).
Зодчий. Книга II
2. Зодчий Империи
Фантастика:
аниме
фэнтези
попаданцы
рейтинг книги
Бестужев. Служба Государевой Безопасности
1. Граф Бестужев
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
Император Пограничья 3
3. Император Пограничья
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
рейтинг книги
Дочь моего друга
2. Айдаровы
Любовные романы:
современные любовные романы
эро литература
рейтинг книги
Идеальный мир для Демонолога 9
9. Демонолог
Фантастика:
боевая фантастика
юмористическая фантастика
аниме
рейтинг книги
Золото Советского Союза: назад в 1975
Фантастика:
попаданцы
альтернативная история
рейтинг книги
Петля, Кадетский корпус. Книга третья
3. Петля
Фантастика:
боевая фантастика
попаданцы
аниме
рейтинг книги
Княжна попаданка. Последняя из рода
1. Княжна попаданка. Магическая управа
Фантастика:
попаданцы
альтернативная история
историческое фэнтези
аниме
сказочная фантастика
фэнтези
рейтинг книги
Моров. Том 4
3. Моров
Фантастика:
фэнтези
попаданцы
альтернативная история
аниме
рейтинг книги
Антимаг его величества. Том IV
4. Модификант
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
Последний Паладин. Том 8
8. Путь Паладина
Фантастика:
боевая фантастика
попаданцы
рейтинг книги
Офицер Красной Армии
2. Командир Красной Армии
Фантастика:
попаданцы
рейтинг книги