Мне нужно добавить самозакрывающийся тег в XML-файл с DOM в PHP, но я не знаю, как это сделать, потому что стандартно этот тег выглядит следующим образом:
<tag></tag>
Но это должно выглядеть так:
<tag/>
DOM автоматически сделает это за вас
$dom = new DOMDocument; $dom->appendChild($dom->createElement('foo')); echo $dom->saveXml();
будет давать по умолчанию
<?xml version="1.0"?> <foo/>
если вы не делаете
$dom = new DOMDocument; $dom->appendChild($dom->createElement('foo')); echo $dom->saveXml($dom, LIBXML_NOEMPTYTAG);
которое затем дало бы
<?xml version="1.0" encoding="UTF-8"?> <foo></foo>
Просто передайте параметр node
в DOMDocument::saveXML
, чтобы выводить только определенный узел без объявления XML:
$doc = new \DOMDocument('1.0', 'UTF-8'); $doc->preserveWhiteSpace = false; $doc->formatOutput = false; $node = $doc->createElement('foo'); // Trimming the default carriage return char from output echo trim($doc->saveXML($node));
дам
<foo/>
не содержащий никакой новой строки / символа возврата каретки.