пятница, 2 ноября 2007 г.

Создание XML на php

Все знают о DOM функциях в javascript. При помощи них можно создать или изменить дерево документа динамически. В языке php тоже предусмотрен целый набор DOM функций, причем они не требуют никаких дополнительных библиотек, так как являются частью ядра 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();

3 комментария:

akak комментирует...

Не подскажешь как сформировать xml такого вида:
(?xml version="1.0"?)
(data)
(img main="1.jpg" thumb="1p.jpg" url="http://site.ru/")
(title)(![CDATA[Заголовок1]])(/title)
(desc)(![CDATA[Описание1]])(/desc)
(/img)
(img main="2.jpg" thumb="2p.jpg" url="http://site.ru/")
(title)(![CDATA[Заголовок2]])(/title)
(desc)(![CDATA[Описание2 ]])(/desc)
(/img)
(img....
....
/img)
(data)
Скобка - это кавычка, думаю понятно..
Был бы очень благодарен помощи.

Unknown комментирует...

простые сети сетевое оборудование искусство массажа дельфины обыкновенный дельфин китай сказки старые сказки аэробика для всех упражнения аэробики тюннинг автомобилей внешний тюнинг обои к шоу обои для рабочего стола рефераты по физике дипломные по физике українські дипломні роботи українські реферати seropol5

Unknown комментирует...

слова песни музыка философия все о философии лирика тестов песен songs lyrics music lyrics delphi все о delphi радиоприемники радиолюбителям азия европа лірика тексти пісень seropol5