我试图使用simpleXML解析一个XML文件,但我一直遇到问题(请注意,我是一个PHP noob。)
这是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>
所有数据都被设置为属性(而不是我的决定)。我需要能够输出其中每个数据的name属性,以及告诉状态的第二个属性。"大陆"将是独一无二的,但每个"大陆"都允许有多个"国家"answers"城市"
这是我目前拥有的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,但我很难开始。此外,我如何确保所有城市都出现,而不仅仅是第一个城市?
你可能不是在国家和城市"骑自行车":
<?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
}
?>