6

我正在尝试使用 php 和 DOM 文档为 Google Merchant 创建提要。

提要包含数千个项目,但无法验证,因为有极少数情况(6000 多个中的 4/5)XML 格式错误,例如:

 <g:product_type>Plantsg:product_type>

我在 foreach 循环中生成

    //Loop through each plant
    foreach($plantList as $plantItem){

        //begin item element
        $item = $xml->createElement('item');


        //Loop through use key as element name and value as data
        foreach ($plantItem as $key => $value)
        {
            //Decode HTML characters, for example '&' becomes  &amp
            //to comply with http://www.w3.org/TR/xhtml1/#C_12
            $decode = htmlspecialchars_decode($value);
            $decode = trim($decode);

            if(empty($decode))
              continue;

            //Create the element
            $tag = $xml->createElement($key);
            $tag = $item->appendChild($tag);

            //Write the field
            $text = $xml->createTextNode($decode);
            $text = $tag->appendChild($text);

        }
        $item = $channel->appendChild($item);
    }

这是xml整个生成代码。

以下是 3 个格式错误的标签:

g:adwords_grouping>18</g:adwords_grouping>

form>10 ltr pot</form>

title>Buy Helleborus x nigercors</title>

当我对代码进行调整时,格式错误的标签会在不同的地方弹出。通常它要么缺少'

4

2 回答 2

1

感谢所有试图解决它的人。当 Chrome 遇到编码问题时,格式错误的标签会被放在那里。

带注释的屏幕截图。在这种情况下,它打开 , 标签遇到 'ö',然后摔倒并没有关闭标签。

正如 hakre 所指出的,当我应该只使用 htmlspecialchars 时,我也错误地使用了 htmlspecialchars_decode,但这是一个完全不同的问题。

于 2013-02-01T13:32:45.853 回答
0

我和@aefxx 在一起,如果您可以在看到格式错误的开始标签的那一行之前和之后提供几行,那将会很有帮助(看起来您展示的所有示例在开始标签中都只缺少一个字符)。

于 2013-01-25T05:36:21.467 回答