J'essaie de générer un flux RSS Google Merchant, en utilisant PHP SimpleXML et DOMDocument.XML mal formé lors de la génération de RSS avec PHP DOMDocument
Le code de production réelle va comme ça:
$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 $ a toutes les données, mais ce n'est pas pertinent à mon problème)
Tout est généré bien, mais il y a un XML erreur ici:
<?xml version="1.0" encoding="utf-8"?>
<rss version="2" xmlns:g="http://base.google.com/ns/1.0"/>
Selon Google Merchant, Google Chrome et validome.org, il y a une erreur dans la deuxième ligne. Plus précisément, Validome dit qu'il ne devrait pas se terminer par />
, mais seulement >
. Le problème est que je n'ai aucun contrôle sur cela. Cette partie a été générée par:
$pRSS = $dom->createElement('rss');
$pRSS->setAttribute('version', '2.0');
$pRSS->setAttribute('xmlns:g', 'http://base.google.com/ns/1.0');
Vous avez absolument raison. Il ne devrait y avoir qu'un seul nœud le plus externe dans un document XML, le nœud racine. Dans un flux RSS, le nœud racine est le, dans un HTML, il s'appelle et ainsi de suite. –
ah mais bien sûr cela a du sens. Merci –
Bien que j'ai toujours un problème: '$ product-> addChild (" g: condition "," nouveau ");' génère ' nouveau '. Il a sauté le "g:". –