Лучше использовать чистые методы DOM или конкатенацию строк для создания очень динамического XML-файла? - PullRequest
3 голосов
/ 12 августа 2010

Мне в основном приходится запрашивать базу данных, чтобы получить все активные свойства, а затем захватывать содержимое под каждым свойством для таких разделов, как условия проживания / опыт, и на основе этого генерировать в основном карту сайта.

Мне интересно, стоит ли мне использовать чисто DOM-методы (я бы сделал сто или около того createElement с, внутри циклов, appendChild и т. Д.) Или просто выполнил гигантскую конкатенацию строк и проверил, что затем сделать это как xml?

Ответы [ 4 ]

4 голосов
/ 12 августа 2010

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

$xmlBlock = '<foo>';
$xmlBlock .= '<bar>'.htmlspecialchars('baz', ENT_NOQUOTES, 'utf-8', false).'</bar>';
$xmlBlock .= '</foo>';

По сравнению с:

$node = $dom->createElement('foo');
$node->appendChild($dom->createElement('bar', 'baz'));

Но опять же, это только мое личное предпочтение ...

2 голосов
/ 12 августа 2010

Я бы сгенерировал его со строками, в большинстве случаев.

$myXml  = "<?xml ...... ";
$myXml .= "<rootNode>";
$myXml .= "<child>";

и т.д ..

1 голос
/ 12 августа 2010

С точки зрения производительности конкатенация строк с последующим двойным проходом по строке является недостатком. Проверка XML в случае методов DOM выполняется автоматически.

0 голосов
/ 12 августа 2010

Если вы беспокоитесь о производительности, используйте выходную буферизацию для создания содержимого XML.Кроме того, создайте или найдите тривиальную библиотеку, которая поддерживает стек тегов, выполняет экранирование XML и т. Д., Чтобы вы могли гарантировать корректный вывод.Таким образом, вы можете пропустить этап проверки, если вам действительно не нужно проверять соответствие схеме или DTD.

Я ничего не знаю в PHP, но Android XmlSerializer - хорошая модель минимального API, необходимого для создания гарантированно правильно сформированного XML без построения DOM в памятикак часть процесса.Данный код не сложен и может быть собран и протестирован отдельно от любых приложений, которые его используют.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...