2

simpleXMLを使用してXMLファイルを解析しようとしていますが、問題が発生し続けます(PHPの初心者であることを忘れないでください)。

これは、XMLファイルの構造です。(読みやすさのために使用される命名規則)。

<World>
  <Continent Name="North America" Status="" >
   <Country Name="United States of America" Status="">
     <City Name="New York" Status="" />
     <City Name="Chicago" Status="" />
   </Country>
  </Continent>
</World>

すべてのデータは属性として設定されます(私の決定ではありません)。これらのそれぞれの名前属性と、ステータスを示す2番目の属性を出力できる必要があります。「大陸」は一意になりますが、各「大陸」には複数の「国」と「都市」を含めることができます。

これは私が現在持っているPHPです...

<?php
        $xml_file = '/path';
        $xml = simplexml_load_file($xml_file);

        foreach($xml->Continent as $continent) {
            echo "<div class='continent'>".$continent['Name']."<span class='status'>".$continent['Status']."</span></div>";
            echo "<div class='country'>".$continent->Country['Name']."<span class='status'>".$continent->Country['Status']."</span></div>";
            echo "<div class='city'>".$continent->Country->City['Name']."<span class='status'>".$continent->Country->City['Status']."</span></div>";
         }

?>

->を使用して、レベルごとに繰り返す必要がないようにするにはどうすればよいですか?xpathを使用できると思いましたが、始めるのに苦労しました。また、最初の都市だけでなく、すべての都市が表示されるようにするにはどうすればよいですか?

4

1 に答える 1

1

あなたはおそらく国や都市を「サイクリング」していませんでした:

<?php
    $xml_file = '/path';
    $xml = simplexml_load_file($xml_file);

    foreach($xml->Continent as $continent) {
        echo "<div class='continent'>".$continent['Name']."<span class='status'>".$continent['Status']."</span>";
        foreach($continent->Country as $country) {
            echo "<div class='country'>".$country['Name']."<span class='status'>".$country['Status']."</span>";
            foreach($country->City as $city) {
                echo "<div class='city'>".$city['Name']."<span class='status'>".$city['Status']."</span></div>";
            }
            echo "</div>"; // close Country div
        }
        echo "</div>"; // close Continent div
    }
?>
于 2013-02-04T22:50:58.633 に答える