1
<info>
<form tableid="1">
<town_id>
<option value="5102">Moscow</option>
<option value="2587">London</option>
<option value="717">Madrid</option>
<option value="2513">Paris</option>
<option value="5071">Berlin</option>
</town_id>
</form>
</info>
我有這樣的xml,並想通過simplexml_load_string解析它。函數返回這樣的對象:在PHP中使用simplexml_load_string解析XML
SimpleXMLElement Object
(
[form] => SimpleXMLElement Object
(
[@attributes] => Array
(
[tableid] => 1
)
[town_id] => SimpleXMLElement Object
(
[option] => Array
(
[0] => Moscow
[1] => London
[2] => Madrid
[3] => Paris
[4] => Berlin
)
)
)
)
我沒有城鎮選項的第二個屬性值。我怎樣才能得到它們? 我的代碼:
/** @var SimpleXMLElement $xml */
$xml = simplexml_load_string($data);
if (! is_object($xml)) return FALSE;
print_r($xml);
foreach($xml as $record){
$attr = $record->attributes();
$table_id = (int)$attr['tableid'];
foreach($record as $key => $value){
//$table_data[$table_id][$key][] = $value['option'];
print_r($value->attributes());
print_r($value['option']->attributes());
}
}
$value
是SimpleXMLElement
對象,但$value->attributes()
和$value['option]->attributes()
返回空數組。
@WebDev,你閱讀'形式/ * [選項]'的例子嗎? '*'是指具有'option'標籤的_all_元素。你根本不需要知道元素名稱。你甚至可以使用'// * [option]'。在後一種情況下,你只需要知道「選項」。 –
哦,對不起。我被交換和枚舉所有領域弄糊塗了。我沒有注意到你只在開關中設置標籤。 – Dev
還有一個問題:我如何才能從tableid = 1的塊形式獲得選項?它是否存在'$ items-> xpath('form [1]/* [option]');'或'$ items-> xpath('form [2]/* [option]');' – Dev