我想不出这个:
$xml = simplexml_load_string($result);
这导致了以下结果(我可以通过Chrome中的视图>源代码看到):
(
[option] => Array
(
[0] => abc1234
[1] => def11234
[2] => ghi1234
[3] => jkl1234
)
[items] => SimpleXMLElement Object
(
[@attributes] => Array
(
[total] => 300
)
[item] => Array
(
[0] => SimpleXMLElement Object
(
[@attributes] => Array
(
[name] => NAME1
)
[urls] => SimpleXMLElement Object
(
[@attributes] => Array
(
[url] => example.com
[img] => /image1.png
)
)
)
[1] => SimpleXMLElement Object
(
[@attributes] => Array
(
[name] => NAME2
)
[urls] => SimpleXMLElement Object
(
[@attributes] => Array
(
[url] => example2.com
[img] => /image2.png
)
)
)
)
)
)
这是一个包含数千个结果的数组的一部分。我需要的数据在"name"、"url"one_answers"image"字段中。我已经搜索了很多,但唯一有效的是提取我甚至不需要的"选项"值。
如何提取这些值?感谢
答案归结为语法:
foreach($xml->items->item as $items) {
print $items->attributes()->name.'<br>';
}
我没有意识到"attributes"是需要命名的节点的一部分,您需要将其称为"attribute()"生活和学习。
据我所知,在元素上循环最简单的方法就是foreach循环:
foreach($xml as $item)
然后,只需查看每个元素的数据类型即可。如果是某种assoc数组,则使用键进行访问;如果是SimpleXMLObject,则将元素作为对象属性进行访问。
当然,这可能取决于您的XML嵌套有多深,以及您有多少。一些XSL也可以为您省去一些麻烦。