У меня проблема с преобразованием моей строки, имеющей структуру XML, в правильный файл XML.
Моя строка выглядит так:
<product>
<ID>12345</ID>
<NAME></NAME>
</product>
<product>
<ID>123</ID>
<NAME></NAME>
</product>
И так далее. Проблема в том, что я получаю пустой результат, если использую DOM.
$dom = new DomDocument('1.0', 'UTF-8');
$dom->loadXML($products);
$xml = $dom->saveXML($dom);
Выход:
string(39) "<?xml version="1.0" encoding="UTF-8"?>
"
Как я могу сделать эту работу? Или я просто могу добавить html и корневые теги к этой строке и просто разобрать ее в файл?
Ваш XML не отформатирован должным образом. XML требует корневого элемента.
Если вы измените свой XML на что-то вроде этого:
<products>
<product>
<ID>12345</ID>
<NAME></NAME>
</product>
<product>
<ID>123</ID>
<NAME></NAME>
</product>
</products>
Это должно работать как ожидалось.
Скорректированный код:
<?php
$dom = new DomDocument('1.0', 'UTF-8');
$dom->loadXML('<products>
<product>
<ID>12345</ID>
<NAME></NAME>
</product>
<product>
<ID>123</ID>
<NAME></NAME>
</product>
</products>');
echo $dom->saveXML();
Выходы:
<?xml version="1.0"?>
<products>
<product>
<ID>12345</ID>
<NAME/>
</product>
<product>
<ID>123</ID>
<NAME/>
</product>
</products>
Других решений пока нет …