2013-09-23 83 views
0

有這樣的代碼:不能老是打印的SimpleXML元素

if (file_exists('my.xml')) { 
    $xml = simplexml_load_file('my.xml'); 
    if($xml === NULL) 
     echo('ERR NULL $xml</br>'); 
    else{ 
     echo('> my.xml opened</br>'); 
     print_r($xml); 
    } 
} 

foreach($xml->data->record as $records){ 
    echo $records->data_to_retrive, PHP_EOL; 
} 
echo('> Ended</br'); 

現在,輸出是這樣的:

> my.xml opened 
> Ended 

所以什麼不好呢?爲什麼它不能t show data_to_retrive, and print_r($xml) don t工作?我卡在這裏,幾乎感到頭痛。

回答

0

simplexml_load_file回報false如果fails.So您可能無法使用===的返回值與NULL比較,因爲false === NULL將fail.You可以使用

if($xml === false) 

代替。

+0

好的。現在我得到了我的輸出'ERR NULL $ xml',所以我猜想在$ xml中什麼也沒有。我認爲正確嗎?那麼爲什麼會這樣呢?如果我啓用了遠程文件,則必須切換。 – Kris

+0

@KrisyKris您可以檢查my.xml是否格式良好。 – Young

+0

我認爲,這是問題(沒有通過驗證),會做它tomorow,因爲my.xml有大約30,000行,並給你答案。 – Kris

0
$file = fopen('my.xml','r'); 
$prexml = fread($file, filesize('my.xml')); 
$prexml = preg_replace('#<([0-9]+)>#si','<z$1>',$prexml); 
$prexml = preg_replace('#</([0-9]+)>#si','</z$1>',$prexml); 
echo('> File opened</br>'); 
$xml = new SimpleXMLElement($prexml); 

好吧,我修復my.xml,現在它的工作。謝謝你的想法!