【问题标题】:Parse XML link with PHP使用 PHP 解析 XML 链接
【发布时间】:2012-03-09 13:09:12
【问题描述】:

我有一个看起来像这样的 XML 提要:

我可以使用 simpleXML 轻松解析标题:

$pictureBoxXMLFeed = simplexml_load_file('https://www.picturebox.tv/xml/feeds/FindAnyFilm/FindAnyFilm.xml');;

echo $pictureBoxXMLFeed->entry[1]->title;

foreach($pictureBoxXMLFeed->entry as $value){

    echo $value->title;
    echo '<br/>';

}

但我需要抓取提要中的链接元素,看起来像这样:

<link href="http://www.picturebox.tv/watchnow?id=UKIC30" rel="alternate"/>

仅供参考,这不起作用:

echo $value->链接;

感谢您的帮助...

【问题讨论】:

  • 定义“不起作用” - 它只是不显示任何内容还是引发错误?
  • 不显示任何内容,它像 DreamWeaver 中的 echo 一样突出显示,让我相信它是保留的?
  • 如果 XML 的根元素是 entry,那么你不需要处理它。 echo $pictureBoxXMLFeed->link->attributes()->href; 会发生什么
  • $value-&gt;link 完美运行。 element 是空的,那么输出应该是什么?如果您在使用 href 属性,那么查看SimpleXml Example #5 in the PHP Manual 会告诉您需要使用$value-&gt;link['href'];

标签: php html xml parsing xml-parsing


【解决方案1】:

这是你的意思吗?

$string = '
<entry>
    <link href="http://www.picturebox.tv/watchnow?id=UKIC30" rel="alternate"/>
</entry>';

$simpleXML = simplexml_load_string($string);
foreach($simpleXML->link->attributes() as $name => $value) {
    echo $name.': '.$value.'<br />';
}

给予:

href: http://www.picturebox.tv/watchnow?id=UKIC30
rel: alternate

【讨论】:

    【解决方案2】:

    在每一个$value中,都是一个simplexml_element,你一个href是一个属性,所以你需要做个检查

    foreach ($value->attributes as $a) {
      if ($a->getName() == "href") { do something; }
    }
    

    $value-&gt;{"href"}; http://us2.php.net/manual/en/class.simplexmlelement.php

    【讨论】:

      【解决方案3】:

      这个怎么样?

      $pictureBoxXMLFeed = simplexml_load_file('https://www.picturebox.tv/xml/feeds/FindAnyFilm/FindAnyFilm.xml');;
      
      foreach($pictureBoxXMLFeed->entry[1] as $value){
          if($value->getName() == 'link') {
          echo $value->asXML();
          }
      }
      

      【讨论】:

        【解决方案4】:

        href 是一个属性,所以:

        foreach($pictureBoxXMLFeed->entry as $value){
            echo $value->link['href'];
            echo '<br/>';
        }
        

        foreach($pictureBoxXMLFeed->entry as $value){
            echo $value->link->attributes()->href;
            echo '<br/>';
        }
        

        【讨论】:

          【解决方案5】:

          试试这个:

          $pictureBoxXMLFeed = simplexml_load_file('https://www.picturebox.tv/xml/feeds/FindAnyFilm/FindAnyFilm.xml',LIBXML_NOEMPTYTAG);
          

          那看看link有没有通过……

          【讨论】:

          • 文件被加载到简单的 XML 中就好了。他试图通过不正确的访问来检索属性。
          猜你喜欢
          • 2015-05-23
          • 2010-11-10
          • 1970-01-01
          • 2011-02-09
          • 1970-01-01
          • 1970-01-01
          • 2012-03-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多