DOMDocument()xmlns给出"< />"而不是"<>"为Google产品创建无效文档。

时间:2014-08-11 04:20:45

标签: php xml dom

我正在尝试为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);
?>

1 个答案:

答案 0 :(得分:1)

在代码的某处,您可以看到如下内容:

$channel = $xml->createElement('channel');
 ...
$xml->appendChild($channel);

这是不正确的。

这会将子项添加到文档本身。您必须将子项添加到现有节点,其中包括根rss节点。

$channel = $xml->createElement('channel');
 ...
$rss->appendChild($channel);