0

PHPのSimpleXMLとDOMDocumentを使用して、GoogleMerchantRSSフィードを生成しようとしています。

実際の生成コードは次のようになります。

$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によると、2行目にエラーがあります。より正確には、Validomeは、それがで終わるべきではなく/>、ただで終わるべきであると言ってい>ます。問題は、私がそれを制御できないことです。その部分はによって生成されました:

$pRSS = $dom->createElement('rss');
$pRSS->setAttribute('version', '2.0');
$pRSS->setAttribute('xmlns:g', 'http://base.google.com/ns/1.0');
4

2 に答える 2

2

<rss>フィードのすべてのコンテンツの親要素であってはなりませんか?

$pRSS親ドキュメントではなく、インポートした XML を に追加する必要があることを意味します。

$domnode = dom_import_simplexml($xml); 
$domnode = $dom->importNode($domnode, true); 
$domnode = $pRSS->appendChild($domnode);  // Change here

これにより の下に余分な不要なノードが作成されないかどうかは今のところ完全にはわかりません<rss>が、いずれにせよ正しい方向です。

于 2010-06-10T19:56:50.100 に答える
1

他のノードを子として追加する必要があります$pRSS

于 2010-06-10T19:55:17.817 に答える