PHP пропускает XMLWriter :: endElement ()

У меня возникла проблема при использовании расширения PHP XMLWriter.
У меня есть совершенно функциональный скрипт, извлекающий действительный XML из старого сервера CentOS 5. Недавно я начал планировать миграцию на CentOS7, а затем тот же сценарий пропускает XMLWritter :: endElement (), поэтому не закрывает никаких элементов при запросе. В конце концов, PHP начинает закрывать их автоматически, потому что на самом деле все они остаются открытыми.

        $writer->startElement( 'element1' );
$writer->text('1');
$writer->endElement('element1');
$writer->startElement( 'element2' );
$writer->text('2');
$writer->endElement('element2');
$writer->startElement( 'element3' );
$writer->text('3');
$writer->endElement('element3');
$writer->startElement( 'element4' );
$writer->text('4');
$writer->endElement('element4');

Я получаю большое дерево вложенных элементов:

<element1>1
<element2>2
<element3>3
<element4>4
...
</element4>
</element3>
</element2>
</element1>

кто-нибудь знает почему это?

0

Решение

XMLWriter-> endElement () не ожидает аргументов и не работает.

Используйте это вместо:

$writer->startElement( 'element1' );
$writer->text('1');
$writer->endElement();
$writer->startElement( 'element2' );
$writer->text('2');
$writer->endElement();
$writer->startElement( 'element3' );
$writer->text('3');
$writer->endElement();
$writer->startElement( 'element4' );
$writer->text('4');
$writer->endElement();

или, более кратко, используйте writeElement, если вы не используете атрибуты:

$writer->writeElement('element1', '1');
$writer->startElement('element2', '2');
$writer->startElement('element3', '3');
$writer->startElement('element4', '4');
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]