2013-06-25 80 views
0

我试图在xml feed中插入像“image id = 1”这样的标签,并使用1到10的ids,但是使用下面的代码得到错误的XML格式错误,有人可以告诉我为什么?XML标签错误格式

$line .='<images>' . $crlf; 
$i=0; 
foreach($images as $img) 
    if ($i < 10) 
    { 
     $i +=1; 
     $line .=' <image id=<![CDATA['.$i.']]>>' . $crlf; 

     $line .=' <image><![CDATA['.$imageUrl.$img->name.']]></image>' . $crlf; 
    } 
$line .=' </images> ' . $crlf;  

我也尝试过使用

$line .=' <image id='.$i.'>' . $crlf; 

,我得到XML错误......

这是饲料应该什么样子:

<images> 
    <image id="1"> 
     <url>http://www.mywebsite/image?id=1&.jpg</url> 
     <title> 
      <en>FOTO 01</en> 
     </title> 
    </image> 
    <image id="2"> 
     <url>http://www.mywebsite/image?id=2&.jpg</url> 
     <title> 
      <en>FOTO 02</en> 
     </title> 
    </image> 
+0

的问题是,每个饲料项目可以有最大10张图片,所以我需要foreach语句减少到10个图像,并且每个图像必须从1号到10标签里面像等。 ....... – ol30cean0

+0

我很肯定你有一个语法错误。什么是你得到的XML错误? – stackErr

+0

我得到错误的XML格式,我翻译这从葡萄牙语,葡萄牙语错误是:错误没有XML:formataçãoincorreta – ol30cean0

回答

1

这应该工作。

$line .='<images>' . $crlf; 
$i=0; 
foreach($images as $img) { 
    if ($i < 10) 
    { 
     $i +=1; 
     $line .= ' <image id="'.$i.'">' . $crlf; 
     $line .= '  <url>'.$imageUrl.$img->url.'</url>' . $crlf; 
     $line .= '  <title><en>'.$imageUrl.$img->title.'</en></title>' . $crlf; 
     $line .= ' </image>' . $crlf; 
    } 
} 
$line .='</images>' . $crlf; 
+0

嗨,感谢您的帮助,其实URL部分$ imageUrl。$ img - >名称。必须在标签内... – ol30cean0

+0

@ ol30cean0只需将其添加即可。这是非常简单的字符串连接... – Shikiryu

+0

是的,但我不是程序员我的朋友.....我在这里尝试没有运气,将继续尝试,谢谢.. – ol30cean0

1

XML需要引号(单或双)所有属性,不像HTML,它并不总是需要它们。您的代码看起来像缺少id属性中的引号。

如果我有我的PHP语法正确,我相信不是:

$line .=' <image id='.$i.'>' . $crlf; 

你可以这样做:

$line .=' <image id=\''.$i.'\'>' . $crlf; 
+0

谢谢,但不幸的是,随着你的解决方案,我得到了一个不同的错误,它似乎希望图像标记被关闭,在葡萄牙语错误是:Erro没有processamento德XML:标记sem对应。 Esperada:。 – ol30cean0

+0

这意味着xml希望图片标签被关闭...... – ol30cean0

+0

HTML和XML之间的区别也是如此:在XML中,所有标签都必须关闭。您可以通过执行'或''来关闭您的标签 - 两者基本相同。 –