simplexml, возвращая несколько элементов с тем же тегом

У меня есть следующий XML-файл, загруженный в php simplexml.

<adf> <prospect> <customer> <name part="first">Bob</name> <name part="last">Smith</name> </customer> </prospect> </adf> 

с помощью

 $customers = new SimpleXMLElement($xmlstring); 

Это вернет «Боб», но как мне вернуть фамилию?

 echo $customers->prospect[0]->customer->contact->name; 

Вы можете получить доступ к различным элементам <name> по номеру, используя синтаксис стиля массива.

 $names = $customers->prospect[0]->customer->name; echo $names[0]; // Bob echo $names[1]; // Smith 

Фактически, вы уже делаете это для элемента <prospect> !

См. Также Basic SimpleXML Использование в руководстве.


Если вы хотите выбрать элементы на основе некоторых критериев, то XPath – это инструмент для использования.

 $customer = $customers->prospect[0]->customer; $last_names = $customer->xpath('name[@part="last"]'); // always returns an array echo $last_names[0]; // Smith