2010-11-04 45 views
0

希望有人可以就我用simplexml的问题提出建议。php simplexml - 字符串作为对象

我需要指定各个节点的路径,但我不确定这是否可能。

$xml = new SimpleXMLElement($xmlstr); 
$image1 = 'images->image[0]->image'; 

foreach ($xml->record as $record) { 
    echo $record->$image1; // i need this be be recognised as $record->images->image[0]->image 
} 

希望这是有道理的!由于

+1

你不能将它转换为XPath代码吗?这比'eval()''d PHP代码更容易,更安全 – Harmen 2010-11-04 20:11:19

回答

3

您可以使用数组此:

$xml = new SimpleXMLElement($xmlstr); 
$levels = array('images', array('key' => 'image', 'index' => 0), 'image'); 

foreach ($xml->record as $record) { 
    $obj = $record; 
    foreach($levels as $level) { 
     if(is_array($level)) 
     $obj = $obj->{$level['key']}[$level['index']]; 
     else 
     $obj = $obj->$level; 
    } 
    echo $obj; 
} 

这通过重新分配$obj等于本身->无论是阵列中的下一个积聚的层次结构。

PHP不能在字符串中插入数组索引,所以如果您需要使用它们,只需使用如上所示的关联数组。 :-)