SimpleXML addChild()添加子节点标题而不是值

时间:2015-11-27 15:16:23

标签: php xml simplexml

尝试在下面的代码块末尾使用SimpleXML的addChild()方法并打印Feed时,输出不是必需的结果。当使用字符串值进行测试时,addChild()正确输出节点的名称和值,但是我不确定数组或其中的对象是否实际上在第一个{{1}的范围内}循环。

我想访问foreach对象的'name'和'type'属性,并使用$nameType将它们输出到我的主Feed。

addChild()

1 个答案:

答案 0 :(得分:0)

不要忘记,$googleStoredXMLDataArray是stdClass对象的索引数组。在数组中获取这些对象的值是使用如下索引完成的:

$googleStoredXMLDataArray[$index]->name;
$googleStoredXMLDataArray[$index]->type;

其中$index介于0count($googleStoredXMLDataArray)-1之间。我相信0是最精确的命中,最后一个值是最不准确的。要获取最后一个值(最不准确),请使用:

$i = count( $googleStoredXMLDataArray ) - 1;
$property->addChild('proximityTo_name', $googleStoredXMLDataArray[$i]->name);
$property->addChild('proximityTo_type', $googleStoredXMLDataArray[$i]->type);

重写最后一部分应该是添加所有接近值的技巧:

foreach( $googleStoredXMLDataArray as $prox ) {
    $property->addChild('proximityTo_name', $prox->name);
    $property->addChild('proximityTo_type', $prox->type);
}

如果你想跳过XML解析,只是解析一个数据数组,你总是可以使用JSON:

$googleURL = 'https://maps.googleapis.com/maps/api/place/nearbysearch/json'
    . '?location='.$latitude.',' . $longitude
    . '&radius=1000&types=train_station&key=my-google-key';
$googleObject = json_decode( file_get_contents($googleURL), true );