PHP:在XML中搜索字符串

PHP:在XML中搜索字符串,php,xml,Php,Xml,我尝试下面的搜索代码,但它只显示第一个子节点。我的代码中缺少什么 --catalog.xml-- <?xml version="1.0" encoding="UTF-8"?> <Catalog> <Category> <Name>CAT1</Name> <Location> <Room>Alpha</Room> </

我尝试下面的搜索代码,但它只显示第一个子节点。我的代码中缺少什么

--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";
}
}
?>
-----输出-----

阿尔法

布拉沃和查理在展览中失踪了。需要有人告诉我在哪里遗漏了什么吗


谢谢

尝试将代码修改为:

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

我想这就是你想要的

<?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";
}
?>

移除裂缝;语句,如果可以有多个类别与搜索的Name元素一起使用。

已尝试,但仍然相同。我创建了一个打印和变量转储,如下所示:Alpha-Check打印\u rSimpleXMLElement对象[0]=>Alpha-Check变量转储对象SimpleXmlElement7 1{[0]=>string5 Alpha}在GUI中,它仍然只显示Alpha。i美元怎么了?查看我的结果:Alpha检查打印\r SimpleXMLElement对象[0]=>Alpha检查变量转储对象SimpleXmlElement8 1{[0]=>string5 Alpha}Bravo检查打印\r SimpleXMLElement对象[0]=>Bravo检查变量转储对象SimpleXmlElement7 1{[0]=>string5 Bravo}Charlie检查打印\r SimpleXMLElement对象[0]=>Charlie Check var_dump objectSimpleXMLElement8 1{[0]=>string7 Charlie}无结果现在在本地对其进行测试,它输出AlphaBravoCharlieHi Guido,测试结果:AlphaBravoCharlieNo结果//也显示无结果,表示If-Else语句失败。AlphaBravoCharlie是CAT1的结果,而对于CAT2或任何其他类别名称,没有结果。这不是你想要的吗?好吧,我想我现在明白你真正想要的结果了,请看我的编辑