1

以下の検索コードを試してみましたが、最初の子ノードしか表示されません。私のコードに何か欠けていますか?

----カタログ.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";
}
}
?>

- - - - -出力 - - - - -

アルファ


ブラボーとチャーリーが表示されていません。どこに欠けているのかアドバイスが必要ですか?

ありがとう

4

2 に答える 2

0

コードを次のように修正してみてください。

echo $category->Location[$i]->Room;
于 2012-11-07T06:59:56.410 に答える
0

私はこれがあなたが望むものだと思います

<?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 エレメントを持つカテゴリーが複数ある可能性がある場合は、ステートメントを削除してください。

于 2012-11-07T07:12:21.830 に答える