<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. Функция возвращает такой объект:Анализ XML с помощью simplexml_load_string в PHP
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, вы читали пример с 'форма/* [опция]'? '*' Относится к _all_ элементам, имеющим тег 'option'. Вам вообще не нужно знать имена элементов. Вы даже можете использовать '// * [option]'. В последнем случае вам нужно знать только о 'option'. –
ой, извините. Меня смутило коммутатор и перечислил все поля. Я не заметил, что вы только устанавливаете метки в коммутаторе. – Dev
еще один вопрос: как я могу получить опции только из формы блока с tableid = 1? Существует ли такой метод, как '$ items-> xpath ('form [1]/* [option]');' или '$ items-> xpath ('form [2]/* [option]');' – Dev