如何在PHP中循环使用SimpleXML对象



我想不出这个:

$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也可以为您省去一些麻烦。

最新更新