首页 > 解决方案 > SimpleXML 循环遍历

问题描述

我像这样通过xml获取产品数据

    <?xml version='1.0' encoding='UTF-8'?>
    <brands>
        <brand>
            <name>Spielberger Mühle</name>
            <kuerzel>SPI</kuerzel>
            <id>e3124594-1d4c-4a72-8c66-37de394fece2</id>
            <last_modified>27.04.2021 23:00:03</last_modified>
            <logo>
                <id>e3124594-1d4c-4a72-8c66-37de394fece2</id>
                <name>SPI_Spielberger Mühle_e3124594-1d4c-4a72-8c66-37de394fece2.jpg</name>
                <size>273981</size>
                <mime_type>image/jpeg</mime_type>
                <img_width>1533</img_width>
                <img_height>676</img_height>
                <last_modified>13.12.2016 12:48:02</last_modified>
            </logo>
            <url>www.spielberger-muehle.de</url>
            <adr_invb_name>Spielberger GmbH</adr_invb_name>
            <adr_invb_strasse>Burgermühle</adr_invb_strasse>
            <adr_invb_plz>74336</adr_invb_plz>
            <adr_invb_ort>Brackenheim</adr_invb_ort>
            <adr_invb_land_id>8</adr_invb_land_id>
        </brand>
    </brands>
    <producers>
        <producer>
 ....

并在我的 php 中(缩短为相关部分)

    $xml = simplexml_load_file('demo.xml');

    foreach ($xml->brands->brand as $key => $value) {

        print "Key: $key - Value: $value\n";

    }

如果我尝试遍历品牌,则会发生以下情况

 Key: brand - Value: 

编辑,因为我认为我是冗长的方式。

标签: phpxml

解决方案


发生这种情况的原因是 SimpleXMLElement 如何处理它的迭代器。get_object_vars您可以使用该函数遍历元素。

foreach (get_object_vars($xml) as $key => $value) {
    print "Key: $key - Value: $value\n";
}

推荐阅读