我正在尝试为Google购物创建有效的商品Feed。除了这个问题,一切都很好。
DOMDocument()正在创建:
<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0" xmlns:c="http://base.google.com/cns/1.0"/>
目标是:
<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0" xmlns:c="http://base.google.com/cns/1.0">
注意缺少“/”
我想&lt; /&GT;是完全有效的代码,但谷歌拒绝它与此错误:
XML格式错误 - 错误
我们的系统在处理您的数据Feed时遇到错误。学习 更多。示例:Line Nr。 3列Nr。 1
那当然与我提到的上述标签有关。
文档以这种方式开始......
<?xml version="1.0"?>
<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0" xmlns:c="http://base.google.com/cns/1.0"/>
<channel>
...
我不知道有任何问题,但Google表示错误。
<?php
$xml = new DOMDocument();
$rss = $xml->createElement('rss');
$version = $xml->createAttribute('version');
$rss->appendChild($version);
$value = $xml->createTextNode('2.0');
$version->appendChild($value);
$xmlns_g = $xml->createAttribute('xmlns:g');
$rss->appendChild($xmlns_g);
$value = $xml->createTextNode('http://base.google.com/ns/1.0');
$xmlns_g->appendChild($value);
$xmlns_c = $xml->createAttribute('xmlns:c');
$rss->appendChild($xmlns_c);
$value = $xml->createTextNode('http://base.google.com/cns/1.0');
$xmlns_c->appendChild($value);
$xml->appendChild($rss);
?>
答案 0 :(得分:1)
在代码的某处,您可以看到如下内容:
$channel = $xml->createElement('channel');
...
$xml->appendChild($channel);
这是不正确的。
这会将子项添加到文档本身。您必须将子项添加到现有节点,其中包括根rss
节点。
$channel = $xml->createElement('channel');
...
$rss->appendChild($channel);