我正在尝试使用PHP的SimpleXML和DOMDocument生成Google Merchant RSS Feed。
实际生成代码如下:
$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说它不应该以{{1}}结尾,而只是/>
。
问题是我无法控制。该部分由以下人员生成:
>
答案 0 :(得分:2)
<rss>
不应该是Feed的所有内容的父元素吗?
这意味着您需要将导入的XML附加到$pRSS
,而不是父文档。
$domnode = dom_import_simplexml($xml);
$domnode = $dom->importNode($domnode, true);
$domnode = $pRSS->appendChild($domnode); // Change here
现在还不完全确定这是否会在<rss>
下创建一个额外的,不必要的节点,但无论如何它都是正确的方向。
答案 1 :(得分:1)
您应该将其他节点作为子节点添加到$pRSS