Обработка внешнего xml, поиск по массиву, simplexml

napishu

Новичок
Здравствуйте! Помогите новичку.

Есть внешний xml, список городов, название, id (http://public.services.dellin.ru/calculatorService2/index.html?request=xmlForm)

PHP:
<data>
<cities>
<city>
<id>
0x834F00112FDD658311DA4C6326EF0E19
</id>
<name>
Уфа
</name>
<isTerminal>
1
</isTerminal>
</city>
<city>
<id>
0x81F600112FDD658311DA7152AB69D683
</id>
<name>
Омск
</name>
<isTerminal>
1
</isTerminal>
</city>
</cities>
</data>
Есть переменная которую я получаю с помощью $POST из формы - название города.

Так вот мне нужно переопределить эту переменную на значение ID из внешнего xml в соответствии с городом.

Что делаю, например:

$del_city = simplexml_load_file('http://public.services.dellin.ru/calculatorService2/index.html?request=xmlForm');

Массив получается такой:

PHP:
SimpleXMLElement Object ( [cities] => SimpleXMLElement Object ( [city] => Array ( [0] => SimpleXMLElement Object ( [id] => 0x834F00112FDD658311DA4C6326EF0E19 [name] => Уфа [isTerminal] => 1 ) [1] => SimpleXMLElement Object ( [id] => 0x81F600112FDD658311DA7152AB69D683 [name] => Омск [isTerminal] => 1 ) [2] => ....
Для примера город из POST:
$city = 'Уфа';

Сам поиск:
ищем в массиве $del_city среди городов Уфа и переопределяем на id ??????????

Итог:
$city = 0x834F00112FDD658311DA4C6326EF0E19;

Главный вопрос в этом поиске по массиву..

Помогите пожалуйста!

Спасибо
 

napishu

Новичок
для поиска используй XPath
Спасибо... помогли, почитал поболее про SimpleXML


Вот что сделал, вроде работает 8) Предположим ищу код для "Тула"


Правильно ли я оформил?


PHP:
$del_city =  simplexml_load_file('http://public.services.dellin.ru/calculatorService2/index.html?request=xmlForm');

          $del_city_ok = array();


foreach ($del_city->xpath('//city') as $city)
{

if ((string) $city->name == 'Тула')
{
$del_city_ok = $city->xpath('id');
}

}

print_r($del_city_ok);
 

napishu

Новичок
Ребята а как искать совпадение а не полностью слово?

$user_city = 'Абрамцево;

А в получаемом xml ($del_city = simplexml_load_file('http://public.services.dellin.ru/calculatorService2/index.html?request=xmlForm')
Абрамцеов будет как Абрамцево (Моск.обл.)

Конструкция не работает:

foreach ($del_city_row->xpath('//city') as $del_city)
{
if ((string) $del_city->name == $user_city)
{
$del_city_id = $del_city->id;
}
}
 
Сверху