我试图解析使用SimpleXML的XML文件,但我一直运行到的问题(你要知道我是一个PHP小白)的SimpleXML:解析XML只输出的元素属性
这是结构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属性,以及告知状态的第二个属性。 “大洲”将是独一无二的,但每个“大陆”都可以有多个“国家”和“城市”。
这是我目前拥有的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,但是我开始艰难。另外,我怎样才能确保所有的城市都显示出来,而不仅仅是第一个?
需要三个嵌套的'foreach'的:(1)'的foreach Continent',(2)'的foreach Country',和( 3)“foreach城市”。通过这种方式,您可以覆盖您的xml文档中的其他内容 – Oerd
我想到了这一点,也许我完全是在捣乱它,但是当我嵌套了foreach时,它会返回所有正确的Continent名称,但随后每个Continent都会返回这些国家/地区的第一个大陆。 (即北美:美国,加拿大|南美:美国,加拿大|非洲:美国,加拿大)等。 – Harlow
给我第二个 – Oerd