XML标签格式错误

时间:2013-06-25 14:24:03

标签: php xml

我正在尝试在xml Feed中插入像“image id = 1”这样的标签,并且使用1到10的ID,但是使用以下代码我得到错误的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错误......

这就是Feed的样子:

<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>

2 个答案:

答案 0 :(得分:1)

XML要求所有属性使用引号(单引号或双引号),这与HTML不同,后者并不总是需要它们。您的代码看起来缺少id属性上的引号。

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

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

你可以这样做:

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

答案 1 :(得分: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;