我获取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;
}
答案 0 :(得分:0)
返回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;
}