Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

XML (DOMDocument)

285
29 мая 2005 года
Romik
479 / / 24.11.2002
Здравствуйте, господа. Вот возникла потребность использовать XML в проекте, в PHP он как бы всесторонне поддерживается. Ну начал читать, пробывать и наткнулся на грабли. Вобщем в документации одно, в примерах немного другое, а ZendStudio 4 вообще показывает третья. Короче, как я понял, проще все (в плане совместимости и переносимости) использовать DOM Functions, т.е.
 
Код:
$dom = new DOMDocument('1.0', 'windows-1251');

$element = $dom->createElement('DocROOT', 'This is the root element!');

$dom->appendChild($element);
echo $dom->saveXML();


и получаем следующее

 
Код:
<?xml version="1.0" encoding="windows-1251"?>
<DocROOT>This is the root element!</DocROOT>


Теперь вношу маленькие изменения:

 
Код:
$dom = new DOMDocument('1.0', 'windows-1251');
$element = $dom->createElement('DocROOT', 'This is the root element!');

// Добавляем вот эти две строки
$cmds=$dom->createElement('CMDS');
$element->appendChild($cmds);
//
$dom->appendChild($element);
echo $dom->saveXML();

и получаем:
 
Код:
<?xml version="1.0" encoding="windows-1251"?>
<DocROOT>This is the root element!<CMDS/></DocROOT>

Вроде всё нормально, теперь ещё маленько изменение:
 
Код:
// Строку $cmds=$dom->createElement('CMDS'); заменяем на:
$cmds=$dom->createElement('CMDS','Hello World');


и в итоге:

 
Код:
<?xml version="1.0" encoding="windows-1251"?>
<DocROOT>This is the root element!<CMDS>Hello World</CMDS></DocROOT>


Но если заменить 'Hello World' на 'Привет всем', то он обрезает и получается

 
Код:
<?xml version="1.0" encoding="windows-1251"?>
<DocROOT>This is the root element!<CMDS>

Ясно, проблема с кодировками, это полбеды, кстати, а как с этим бороться?

Но тут есть ещё одна проблема, я никак не могу разобраться с объектной моделью. Например appendChild определён только для DOMNode, но используется и в DOMDocument, значит DOMDocument наследуется от DOMNode? Но это очевидные вещи, а как добавить атрибут в элемент? Какая тут объектная модель, какие методы? Куда что возвращается и как сохраняется.

Если кто сталкивался с подобными траблами, не могли бы вы подсказать ресурс в сети, где был бы обзор классов DOM для работы с XML в PHP. Хотя в руководстве это дело и называется DOM Functions, но без знания объектной модели сложно работать.
8.8K
29 мая 2005 года
denalta
12 / / 23.01.2005
зайди на php.net есть там и такие фунуции!
285
29 мая 2005 года
Romik
479 / / 24.11.2002
Цитата:
Originally posted by denalta
зайди на php.net есть там и такие фунуции!



Там я был, кое-как с некоторыми вещами разобрался. Объектной модели нигде не нашёл. Т.е. в мануале есть строки вроде

 
Код:
DOMElement {
  bool setAttribute(string name,
                    string value);
}

Ну так мне что бы увидеть всю картину целиком прийдётся всё это руками собирать со всего мануала, а тут я могу и ошибится. Кстати, а чё делать с кириллицей?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог