我有这样的东西:

$url = "http://ws.geonames.org/findNearbyPostalCodes?country=pl&placename=";
$url .= rawurlencode($city[$i]);

$xml = simplexml_load_file($url);
echo $url."\n";
$cityCode[] = array(
    'city' => $city[$i], 
    'lat' => $xml->code[0]->lat, 
    'lng' => $xml->code[0]->lng
);

它应该从geonames下载XML。如果我执行print_r($xml),我得到:

SimpleXMLElement Object
(
    [code] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [postalcode] => 01-935
                    [name] => Warszawa
                    [countryCode] => PL
                    [lat] => 52.25
                    [lng] => 21.0
                    [adminCode1] => SimpleXMLElement Object
                        (
                        )

                    [adminName1] => Mazowieckie
                    [adminCode2] => SimpleXMLElement Object
                        (
                        )

                    [adminName2] => Warszawa
                    [adminCode3] => SimpleXMLElement Object
                        (
                        )

                    [adminName3] => SimpleXMLElement Object
                        (
                        )

                    [distance] => 0.0
                )

我这样做,你可以看到$xml->代码[0]->lat,它返回一个对象。我怎样才能得到这个值?


当前回答

你也可以使用神奇的方法__toString()

$xml->code[0]->lat->__toString()

其他回答

尝试当前(- > xml代码美元[0]- > lat)

它返回数组当前指针下的element,它是0,所以你会得到value

这个函数总是帮助我将xml相关的值转换为数组

function _xml2array ( $xmlObject, $out = array () ){
    foreach ( (array) $xmlObject as $index => $node )
        $out[$index] = ( is_object ( $node ) ) ? _xml2array ( $node ) : $node;

    return $out;
}

如果您知道XML元素的值是一个浮点数(纬度、经度、距离),则可以使用(float)

$value = (float) $xml->code[0]->lat;

同样,(int)表示整数:

$value = (int) $xml->code[0]->distance;

你也可以使用神奇的方法__toString()

$xml->code[0]->lat->__toString()

您可以使用“{}”来访问您的属性,然后您可以按照自己的意愿进行操作。 保存或显示内容。

    $varName = $xml->{'key'};

从你的例子中,她就是代码

        $filePath = __DIR__ . 'Your path ';
        $fileName = 'YourFilename.xml';

        if (file_exists($filePath . $fileName)) {
            $xml = simplexml_load_file($filePath . $fileName);
            $mainNode = $xml->{'code'};

            $cityArray = array();

            foreach ($mainNode as $key => $data)        {
               $cityArray[..] = $mainNode[$key]['cityCode'];
               ....

            }     

        }