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

  • Автор темы Автор темы napishu
  • Дата начала Дата начала

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;

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

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

Спасибо
 
для поиска используй 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);
 
Ребята а как искать совпадение а не полностью слово?

$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;
}
}
 
Сверху