需要有关SimpleXML和检索HREF节点值的帮助


Need help with SimpleXML and retrieving HREF node value

我试图检索HREF并使用SimpleXML将其回显,但我一直收到下面的错误消息。

警告:为中的foreach()提供的参数无效。。。

<?php
$url = 'file.xml';
foreach(simplexml_load_file($url)->info->content->item as $it) {
    echo $it->site-page-href;
}
?> 
<?xml version="1.0" encoding="utf-8"?>
<info>
    <content>
        <item>
            <site>
                <page>
                    <href>http://domain.com</href>
                </page>
            </site>
        </item>
    </content>
<info>

有人能发现问题吗?

  1. echo $it->site-page-href;应为echo $it->site->page->href;
  2. 您的结束标记应为</info>
  3. 你不应该像你一样使用->info已经在根元素处

    simplexml_load_file($url)->content->item不是
    simplexml_load_file($url)->info->content->item

顺便说一句,如果使用xpath,可以更容易地找到所有href节点。

 $xml = simplexml_load_file($url);
 $href = $xml->xpath(".//href");
 foreach($href as $h) {
    var_dump($h);
 }

首先使用

echo $it->site->page->href;

而是

echo $it->site-page-href;

并在XML文件中以</info>结束<info>标记。