функций, причем они не требуют никаких дополнительных библиотек, так как являются частью ядра php.
Функции DOM очень удобно использовать при создании XML файлов.
Рассмотрим небольшой пример: нужно построить XML такого вида:
<?xml version="1.0" encoding="UTF-8"?>
<Товары>
<Клавиатура КоличествоКнопок="108">
<Бренд>Logitech</Бренд>
<Тип>проводная</Тип>
<Модель>KB-2025</Модель>
<Производитель>Тайвань</Производитель>
</Клавиатура>
</Товары>
Чтобы реализовать это при помощи DOM функций, создаем объект DOMDocument. Это следует сделать так:
$dom = new DOMDocument("1.0");
Основные методы, которые нам понадобятся:
- $dom->createElement(имя_элемента) - создает XML элемент
- $dom->createAttribute(имя_аттрибута) - создает аттрибут для элемента
- $dom->createTextNode(текст) - создает текстовый элемент (узел)
- $Node->appendChild(объект_Node) - применяет узел к указанному элементу
Далее приведен код с комментариями:
<?php
$dom = new DOMDocument("1.0");
// создаем корневой элемент 'Товары'
$root = $dom->createElement('Товары');
// создаем товар 'Клавиатура'
$keyb = $dom->createElement('Клавиатура');
// создаем аттрибут для клавиатуры
$q = $dom->createAttribute('КоличествоКнопок');
// применяем аттрибут для клавиатуры
$keyb->appendChild($q);
// добавляем элемент 'Клавиатура' к корневому элементу
$root->appendChild($keyb);
// создаем элемент 'Бренд'
$brand = $dom->createElement('Бренд');
// создаем текстовый узел
$txt = $dom->createTextNode('Logitec');
// записываем текст в содержимое тега 'Бренд'
$brand->appendChild($txt);
// располагаем 'Бренд' внутри тега 'Клавиатура'
$keyb = $dom->appendChild($brand);
// ...
?>
Таким же образом создаем все остальные элементы. После чего, мы можем сохранить получившийся XML файл:
// сохраняем файл
$dom->save('file.xml');
Кроме этого можно не сохранять данные в файл, а получить их в виде строки:
// получаем строку
$str = $dom->saveXML();
4 комментария:
Спасибо. Доступно и понятно.
Отличная статья!
Очень помогла
Вставил пример.
в файл вставился узел Бренд с текстом Logitec. А где всё остальное?:(
Обьясните пожалуйста в чем проблема?
$root= $dom->appendChild($dom->createElement('xml',''));
Отправить комментарий