PHP,不能使用xml数组(simplexml)

时间:2013-11-18 16:27:12

标签: php xml arrays simplexml

我有一个xml格式的rss,其中包含(格式正确的)

$xml = simplexml_load_file("/rss.xml");
echo $xml->item[0]->guid;

这段代码什么都没给我。 如果我var_dump $xml,我会获得40个数组。

有人可以猜到为什么吗?

的var_dump:

object(SimpleXMLElement)#1 (2) {
  ["@attributes"]=>
  array(1) {
    ["version"]=>
    string(3) "2.0"
  }
  ["channel"]=>
  object(SimpleXMLElement)#2 (6) {
    ["title"]=>
    string(11) "example.com"
    ["link"]=>
    string(23) "http://www.example.com/"
    ["description"]=>
    string(43) "Example free hosting for free unicorn videos."
    ["lastBuildDate"]=>
    string(31) "Mon, 18 Nov 2013 05:03:00 +0100"
    ["ttl"]=>
    string(2) "20"
    ["item"]=>
    array(40) {
      [0]=>
      object(SimpleXMLElement)#3 (5) {
        ["title"]=>
        string(23) "..."
        ["description"]=>
        string(766) ".. "
        ["link"]=>
        string(59) "http://www.example.com/..."
        ["guid"]=>
        string(12) "video5748963"
        ["pubDate"]=>
        object(SimpleXMLElement)#43 (0) {
        }
      }
      [1]=>
      object(SimpleXMLElement)#4 (5) {
        ["title"]=>
        string(48) "...s"
        ["description"]=>
        string(789) "..."
        ["link"]=>
        string(84) "http://www.example.com/,,,"
        ["guid"]=>
        string(12) "video4863479"
        ["pubDate"]=>
        object(SimpleXMLElement)#43 (0) {
        }
      }
 ....

2 个答案:

答案 0 :(得分:2)

应该是

$xml->channel->item[1]->guid

让你获得指导。

答案 1 :(得分:0)

这是典型RSS文件的结构:

<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        ...
        <item>...</item>
        <item>...</item>
        ...
    </channel>
</rss>

在您的通话中,您必须省略顶级节点(本例中为<rss>),而不是二级节点:

echo $xml->item[0]->guid; // <channel>?