如果1st XML为空,则加载另一个XML

时间:2011-11-28 11:37:40

标签: php xml

我获取xml提要的内容并使用php在我的网页上打印标题:

                $url = 'http://site.com/feed';
                $xml = simplexml_load_file($url);

                foreach($xml->ART as $ART) {
                    echo $ART->TITLE;
                }

我希望能够设置备份,因此如果找不到第一个xml,则会加载另一个xml。

我尝试了以下代码,但它不起作用。如果没有找到提要页面显示'XML Parsing Error:',我猜这不是什么都没有。

                if ($url != '') {
                    $xml = simplexml_load_file($url);
                } else {
                    //Here I would load a different xml file. 
                }

我该怎么办?我应该写条件php来检查第一个网址是否包含TITLE,如果没有加载第二个网址?

谢谢

UPDATE 这弄乱了我的整个页面:

                $first_url = 'http://site.com/feed1';
                $second_url = 'http://site.com/feed2';


                // if URL wrappers is enabled
                if (is_url($first_url))
                {
                  // parse first url
                  $xml = simplexml_load_file($first_url);
                }
                else
                {
                  // parse second url
                  $xml = simplexml_load_file($second_url);
                }


                foreach($xml->ART as $ART) {
                    echo $ART->TITLE;
                }

3 个答案:

答案 0 :(得分:0)

请参阅simplexml_load_file

  

返回SimpleXMLElement类的对象,其属性包含XML文档中保存的数据。出错时,它将返回FALSE。

来自php.net的例子

<?php
 // The file test.xml contains an XML document with a root element
 // and at least an element /[root]/title.

  if (file_exists('test.xml')) {
    $xml = simplexml_load_file('test.xml');

    print_r($xml);
  } else {
     exit('Failed to open test.xml.');
  }
?>

编辑:你可以做到

$url = 'http://site.com/feed';
            if( $xml = simplexml_load_file($url) ) {

                 foreach($xml->ART as $ART) {
                      echo $ART->TITLE;
                  }
            } else {
              //parsing new url
            }

答案 1 :(得分:0)

function parse_xml($url)
{
  // your code
}

try
{
  parse_xml($first_url);
}
catch (Exception $e)
{
  parse_xml($second_url); 
}

或者,您可以在继续解析之前检查URL是否返回XML: -

// if URL wrappers is enabled
if (is_url($first_url))
{
  // parse first url
  $xml = simplexml_load_file($first_url);
}
else
{
  // parse second url
  $xml = simplexml_load_file($second_url);
}

答案 2 :(得分:0)

认为我已经使用它了:

                $url = 'site.com/feed1';
                $xml = simplexml_load_file($url);

                if ($xml == null) {
                    $url = 'site.com/feed2';
                    $xml = simplexml_load_file($url);
                    }

                foreach($xml->ART as $ART) {
                    echo $ART->TITLE;
                }