Я пробую код поиска ниже, но он показывает только первый дочерний узел. Что-то не хватает в моем коде?
—- —- 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"; } } ?>
———Вывод———-
Альфа
Браво и Чарли отсутствуют на дисплее. Нужно кому-то советовать, где я чего-то не хватает?
благодаря
Я думаю, это то, что вы хотите
<?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;