微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用PHP提取XML数据?

我可以得到除lat,lng和地址之外的所有数据.

如何获取这些数据,我哪里出错了?

这是我的代码

<device_lastupdate>
<version>1.0</version>
<device>
    <id>012980000234020</id>
    <updated_at type="dateTime">2015-01-28T10:21:50+05:30</updated_at>
    <location>
        <lat type="float">12.828383</lat>
        <lng type="float">79.695983</lng>
        <address>Karukinil Amarthanval Street</address>
    </location>
    <odometer type="float">12341</odometer>
    <speed type="float">0</speed>
    <ignition>false</ignition>
</device>

这是我的PHP代码

$xml = simplexml_load_file("data.xml");
echo "<h2>".$xml->getName()."</h2><br />";

foreach($xml->children() as $device)
{
    echo "ID : ".$device->id."<br />";
    echo "Updated At : ".$device->updated_at." <br />";
    echo "Latitude : ".$device->lat." <br />";
    echo "Longitude : ".$device->lng." <br />";
    echo "Address : ".$device->address." <br />";

    echo "odometer : ".$device->odometer." <br />";
    echo "Speed: ".$device->speed." <br />";
    echo "Ignition:".$device->ignition."<br />";
    echo "<hr/>";
}

解决方法:

我们可以利用这个小函数获取对象和属性获取其值.

<?PHP
        $xml = simplexml_load_file("data.xml");
        echo "<h2>".$xml->getName()."</h2><br />";

        function xml_attribute($object, $attribute)
        {
            if(isset($object[$attribute]))
                return (string) $object[$attribute];
        }

        foreach($xml->children() as $device)
        {
            var_dump($device->location);
            $lng =  xml_attribute($device->location->lng, 0);
            $lat =  xml_attribute($device->location->lat, 0);
            $address =  xml_attribute($device->location->address, 0);
            echo "BOOK : ".$device->id."<br />";
            echo "Author : ".$device->updated_at." <br />";
            echo "Title : ".$lng." <br />";
            echo "Genre : ".$lat." <br />";
            echo "Price : ".$address." <br />";

            echo "Publish Date : ".$device->odometer." <br />";
            echo "Description : ".$device->speed." <br />";
            echo "Ignition:".$device->ignition."<br />";
            echo "<hr/>";
        }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。