Генерация xml: DOM vs. string

Clubber

Новичок
Генерация xml: DOM vs. string

Хочу узнать, как опытные люди генерируют xml. Сам до этого по большей части писал что-то типа:
PHP:
<?php
$xml = "<?xml version='1.0' ?>";
$xml .= "<root attr='".htmlspecialchars($attr)."'>";
...
$xml .= "</root>";
print $xml;
Но пришел к выводу, что это как-то неправильно :)
Сейчас стараюсь использовать DOM XML. Код выглядит более громоздко, менее понятно, но мне кажется, что этот путь лучше:
PHP:
$xml = new DOMdocument("1.0", ...);
$root = $xml->createElement("root");
$root->setAttribute("attr", $attr);
...
$xml->appendChild($root);
print $xml->saveXML();
А как делаете вы?
 

Popoff

popoff.donetsk.ua
Но пришел к выводу, что это как-то неправильно
Что такое "правильная программа"?
http://popoff.donetsk.ua/text/work/prg/accuracy.html

При генерации с нуля чаще удобно использовать первый вариант. При модификации существующего XML-кода почти всегда удобнее пользоваться вторым способом.
 

Clubber

Новичок
ну вот я, например, не доверяю функции htmlspecialchars при работе с XML (не нравится мне там html в названии). И считаю, что возлагать эскейпинг на DOM - правильней. DOM вообще довольно трудно заставить сгенерить не well-formed xml.

С другой стороны, как я говорил, понятность скрипта страдает. А это уже неправильно.

Вот и не знаю, какую "политику" выбрать.

Еще плюсом в программе считается использование одинаковых инструментов в похожих (одинаковых задачах). Например, если уж готовые xml обрабатывать DOMом, то для единообразия неплохо бы и новые xml-ки тоже DOMом генерить. Тоже дилемма.
 

slach

Новичок
почему страдает понятность скрипта?
тот кто знает DOM вообще может понять структуру XML документа вполне себе грамотно

вообще DOMDocument можно наследовать например делать там свои методы которые "более понятны" и которые например к текущему документу добавляют какие надо ноды

в мануале пример с наследованием вроде есть
 

Wicked

Новичок
slach
Ну лично для понимания первого примера хватает беглого взгляда. Для понимания второго - нужно более четко отслеживать, каким именно объектам что добавляется. Все таки с уверенностью могу сказать, что DOM сложнее для понимания, чем xml строка.

За идею с наследованием спасибо.
 
Сверху