为什么这个循环 运行 无限期?
Why is this loop running indefinitely?
我有这样的代码,它读取 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的XMLReader一个一个的获取一个节点然后SimpleXML处理节点本身。
太蠢了。我忘记了 $xml_reader->next('product');
,所以 while
循环总是围绕同一个节点重新开始。
我有这样的代码,它读取 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的XMLReader一个一个的获取一个节点然后SimpleXML处理节点本身。
太蠢了。我忘记了 $xml_reader->next('product');
,所以 while
循环总是围绕同一个节点重新开始。