Я пытаюсь создать RSS-канал Google Merchant с использованием SimpleXML и DOMDocument PHP.Недостаток XML при генерации RSS с помощью PHP DOMDocument
Фактические производящий код выглядит, что:
$dom = new DOMDocument('1.0', 'utf-8');
$dom->formatOutput = true;
$pRSS = $dom->createElement('rss');
$pRSS->setAttribute('version', '2.0');
$pRSS->setAttribute('xmlns:g', 'http://base.google.com/ns/1.0');
$dom->appendChild($pRSS);
$domnode = dom_import_simplexml($xml);
$domnode = $dom->importNode($domnode, true);
$domnode = $dom->appendChild($domnode);
$dom->save('googleproductfeed.xml');
($ XML содержит все данные, но это не имеет отношения к моей проблеме)
Это все получает генерируется хорошо, но есть XML ошибка здесь:
<?xml version="1.0" encoding="utf-8"?>
<rss version="2" xmlns:g="http://base.google.com/ns/1.0"/>
Согласно Google Merchant, Google Chrome и validome.org, во второй строке есть ошибка. Точнее, Validome говорит, что он не должен заканчиваться />
, но только >
. Проблема в том, что у меня нет контроля над этим. Та часть была порождена:
$pRSS = $dom->createElement('rss');
$pRSS->setAttribute('version', '2.0');
$pRSS->setAttribute('xmlns:g', 'http://base.google.com/ns/1.0');
Вы абсолютно правы. В XML-документе должен быть только один внешний узел - корневой узел. В корневом узле RSS корневой узел является один, в HTML он называется и так далее. –
ах, но, конечно, это имеет смысл. Спасибо –
Хотя у меня все еще есть одна проблема: '$ product-> addChild (" g: condition ", 'new');' генерирует ' новый '. Он пропустил «g:». –