следующий код должен создать файл XML, используя DOMDocument с корневым элементом:
$doc = new DOMDocument('1.0', 'utf-8');
$doc->formatOutput = true;
$root = $doc->createElement('gallery');
$doc->appendChild($root);
$doc->save($filename);
но я просто получаю один элемент тега (с этой косой чертой «/») вместо
<gallery> </gallery>
Мне удалось получить
<gallery> A content </gallery>
если я использую createElement со вторым параметром ($ doc-> createElement (‘gallery’, ‘A content’)), но так как это корневой элемент, мне не нужно помещать туда контент.
Как это исправить?
Спасибо
<gallery />
эквивалентно <gallery></gallery>
, Если вы добавите контент к «элементу с одним тегом», он будет отображаться с начальным и конечным тегами, а также между ними.
<gallery/>
это короткая форма сериализации для пустого тега. При загрузке в DOM это приведет к тому же узлу. Так что в большинстве случаев это просто не имеет значения, и вы можете использовать короткую пустую форму.
Однако вы можете потребовать от DOM сохранить пустые теги в длинной форме:
$document = new DOMDocument('1.0', 'utf-8');
$document->formatOutput = true;
$root = $document->appendChild(
$document->createElement('gallery')
);
// echo $document->save($filename, LIBXML_NOEMPTYTAG);
echo $document->saveXml(null, LIBXML_NOEMPTYTAG);
Выход:
<?xml version="1.0" encoding="utf-8"?>
<gallery></gallery>