【问题标题】:XML tag wrong format [duplicate]XML标签格式错误[重复]
【发布时间】:2013-06-22 09:41:47
【问题描述】:

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

【问题讨论】:

  • 问题是每个提要项最多可以有 10 个图像,所以我需要将 foreach 语句减少到 10 个图像,并且每个图像必须在 等等…………
  • 我很确定您有语法错误。你得到的 xml 错误是什么?
  • 我的 xml 格式错误,我是从葡萄牙语翻译过来的,葡萄牙语的错误是:Erro no processamento de XML: formatação incorreta
  • 问题出在这一行: $line .=' >' 。 $crlf;
  • 您似乎没有关闭 &lt;image id&gt; 标记。

标签: php xml


【解决方案1】:

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

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

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

你可以这样做:

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

【讨论】:

  • 谢谢,但不幸的是,使用您的解决方案我得到了一个不同的错误,似乎 xml 想要关闭图像标签,在葡萄牙语中,错误是:Erro no processamento de XML: tag sem compatibleência。埃斯佩拉达:.
  • 表示xml要关闭图片标签...
  • HTML 和 XML 的区别也是:在 XML 中,所有标签都必须关闭。您可以通过 &lt;image id='1' /&gt;&lt;image id='1'&gt;&lt;/image&gt; 关闭您的标签 - 两者基本上是等效的。
  • 是的,但是我需要像 这样的行,从 1 到 10 并且没有结束标签,这必须是可能的,因为其他人发布了相同的提要,所以......我只是需要了解如何做到这一点... grrrrr
  • 如果这是您需要的,那么它不是 XML。 XML 对这种事情有非常严格的规定,所以没有办法绕过它。
【解决方案2】:

这应该可行。

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

【讨论】:

  • 嗨,感谢您的帮助,实际上是 URL 部分 $imageUrl.$img->name。必须在 标签内...
  • @ol30cean0 然后添加它。这是非常简单的字符串连接......
  • 是的,但我不是程序员我的朋友.....我在这里尝试没有运气,会继续尝试,谢谢..
  • @ol30cean0 我添加了一个更精确的示例,让您了解如何自己管理。
  • 非常感谢,这行得通...
猜你喜欢
  • 2023-03-29
  • 2011-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-13
相关资源
最近更新 更多