为什么这个循环无限期地运行?

时间:2015-09-01 07:02:33

标签: php xml xmlreader

我有这样的代码,它读取XML文档并将其复制到格式不同的XML。

    $new = '<prestashop>';

    while ($xml_reader->read() and $xml_reader->name !== 'product');

    while ($xml_reader->name === 'product')         // dla kazdego produktu
    {
        $node = new SimpleXMLElement($xml_reader->readOuterXML());
        $new .= '<product>';

        foreach ($this->columns as $out => $in)     // dla kazdej kolumny xml
        {
            if ($node->$xml !== '')                 // jesli ma wartosc
            {
                $new .= "<{$out}>{$node->$in}</{$out}>";
            }
            else
            {
                $new .= "<{$out}/>";
            }
        }
        $new .= '</product>';
    }
    $new .= '</prestashop>';

XML具有以下结构:<product>...</product><product>...</product>。我检查了我能做的任何事情,错误可能在while

@edit:我使用PHP的XML Reader逐个获取节点,然后使用SimpleXML来处理节点本身。

1 个答案:

答案 0 :(得分:0)

愚蠢。我忘了$xml_reader->next('product');所以while循环总是在同一个节点上重复。