我正在用 PHP 编写一个小型 RSS 解析器,我正在使用 simplexml,但遇到了一个问题。我创建了一个名为 ArticleFormatter 的类,这里是
class ArticleFormatter {
private $feedData;
function __construct($feedUrl) {
$feedData = simplexml_load_file($feedUrl);
}
function parse() {
echo " \n begin parsing \n";
$rawArticles = $feedData->channel[0];
print_r($rawArticles);
echo "\n";
$currentArticle = $rawArticles->item[0];
print_r($currentArticle);
$articles = array();
echo "\n starting loop \n";
for($i = 0; !is_null($currentArticle); $i++) {
echo "ran";
array_push($articles, $currentArticle);
$currentArticle = $rawArticles->item[$i + 1];
}
return $articles;
}
}
事情是这样的,我知道 simplexml_load_file 正在返回一个合法的 SimpleXMLElement,因为当我在构造函数中放置一个 print 语句时,它会打印出各种 xml 元素,而且,我知道 $feedData->item[ 0] 是合法的 SimpleXMLElement,因为我也尝试在构造函数中打印它。然而,当 parse() 按原样运行时,打印出来的只是“开始解析起始循环数组 ()”(调用此函数的代码会打印出返回值)。建议我,当 parse 函数运行时,$feedData 不知何故等于 NULL,因此该函数只返回一个空数组。我确信我在某个地方犯了一个愚蠢的错误,所以任何建议都会非常感激。