我正在遍历一个xml
文件,如下所示:
<?xml version="1.0" encoding="ISO-8859-1"?>
<wrapper>
<site base="http://www.example1.co.uk/" name="example 1">
<page>page1/</page>
</site>
<site base="http://www.example2.co.uk/" name="example 2">
<page>page2/</page>
</site>
</wrapper>
我的php
是这样的:
xml = simplexml_load_file("siteList.xml");
foreach ($xml->site as $site => $child) {
foreach ($xml->$site->page as $a => $page) {
$endUrl = ($child["base"] . "" . $page);
print_r($endUrl . "<br />");
}
}
这在技术上是有效的,但返回以下内容:
http://www.example1.co.uk/page1/
http://www.example2.co.uk/page1/
代替:
http://www.example1.co.uk/page1/
http://www.example2.co.uk/page2/
不知怎么的,它使用了上一个循环中的page
,我无法计算出来:'(
提前感谢!
您应该对内部循环的$child
进行迭代,但事实并非如此。要修复它,请更改此
foreach ($xml->$site->page as $a => $page) {
到这个
foreach ($child as $page) { // you don't even need the $a
您也可以将外循环简化为foreach ($xml->site as $child)
,因为您不关心密钥;如果您这样做,将$child
重命名为$site
将是提高可读性的合乎逻辑的下一步。
它是使用上一个循环中的page
。也许这一变化会有所帮助:
xml = simplexml_load_file("siteList.xml");
foreach ($xml->site as $site => $child) {
foreach ($site->page as $a => $page) {
$endUrl = ($child["base"] . "" . $page);
print_r($endUrl . "<br />");
}
}