PHP: поиск строки в XML

Я пробую код поиска ниже, но он показывает только первый дочерний узел. Что-то не хватает в моем коде?

—- —- catalog.xml

<?xml version="1.0" encoding="UTF-8"?> <Catalog> <Category> <Name>CAT1</Name> <Location> <Room>Alpha</Room> </Location> <Location> <Room>Bravo</Room> </Location> <Location> <Room>Charlie</Room> </Location> </Category> <Category> <Name>CAT2</Name> <Location> <Room>Delta</Room> </Location> <Location> <Room>Eagle</Room> </Location> <Location> <Room>Falcon</Room> </Location> </Category> </Catalog> 

—- —- arr0.php

 <?php $catalog = simplexml_load_file("catalog.xml"); $category = $catalog->Category; foreach($category->Name as $name) { $menu = (string)$name; $i = 0; if ($menu == "CAT1" ) { echo $category->Location->Room[$i]; $i++; } else { echo "No result"; } } ?> 

———Вывод———-

Альфа


Браво и Чарли отсутствуют на дисплее. Нужно кому-то советовать, где я чего-то не хватает?

благодаря

Related of "PHP: поиск строки в XML"

Я думаю, это то, что вы хотите

 <?php $catalog = simplexml_load_file("catalog.xml"); $category = $catalog->Category; $found = false; foreach($category as $c) { $menu = (string) ($c->Name); if ($menu == "CAT1" ) { foreach ($c->Location as $loc) { echo $loc->Room; } $found = true; break; } } if (!$found) { echo "No result"; } ?> 

Удалите break; если вы можете иметь более одной категории с искомым элементом Name.

Попробуйте пересмотреть код:

 echo $category->Location[$i]->Room;