我使用PHP中的SimpleXMLElement从API中提取XML数据,并按如下方式迭代元素:
$xml = new SimpleXMLElement (file_get_contents ($api_url));
foreach ($xml->element as $element) {
print $element->name;
}
使用此代码,返回12个元素名称(这是正确的)。
但是,当我遍历这些元素时,我想跳过任何已完成的元素并继续处理不完整的元素。
从API返回的XML的格式如下:
<element>
<name>Alpha</name>
<completed>true</completed>
</element>
--or--
<element>
<name>Beta</name>
<completed>false</completed>
</element>
如果我添加&#34;如果已完成,则打破&#34; foreach循环中的语句绕过已完成的元素,它只处理1个元素(应该有7个):
foreach ($xml->element as $element) {
if ($element->completed == 'true')
break;
/* continue processing incomplete elements */
}
如果我更改代码以绕过不完整的元素,它会正确返回5个不完整的元素名称。
if ($element->completed == 'false')
break;
好像其他6个元素被认为是真实的&#39;并且&#39; false&#39;因为在上述两种情况下都会跳过它们。
我也尝试了其他比较,但没有一个返回7个不完整的元素。
=== 'true' (returns 12 elements)
=== 'false' (returns 12 elements)
== true (returns 0 elements)
== false (returns 12 elements)
=== true (returns 12 elements)
=== false (returns 12 elements)
必须有一些我可以忽视的东西 - 你能给予的任何指导都会受到赞赏。
答案 0 :(得分:0)
您好,请替换代码
foreach ($xml->element as $element) {
if ($element->find('completed')[0]->plaintext == 'true')
break;
/* continue processing incomplete elements */
}