我正在閱讀XML提要,並希望與舊版本進行比較以檢查更新。在PHP中比較XML而不使用散列
我目前的問題是我似乎無法制作SimpleXML對象的副本,另一個問題是我不確定可以直接比較它們。
這是我的代碼,因爲它代表。我顯然只是測試本地文件,但我打算最終從網絡上加載。
長時間使用睡眠可以嗎?我以爲15分鐘的時間間隔往往足夠達到我的目的。
error_reporting(E_NOTICE);
$file = 'tmbdata_sm.xml';
$xml_old = "";
while(true){
$xml = simplexml_load_file($file);
if($xml != $xml_old){
foreach($xml->channel->item as $item){
echo $item->title . "\n";
echo $item->link . "\n";
}
$xml_old = clone $xml;
$xml = "";
}else{
echo 'no change';
}
sleep(60);
}
甚至只是在URL上使用'file_get_contents()',因爲這相當於'simplexml_load_file()'。否則,我正在給出相同的答案:只是比較它們作爲字符串。 – 2009-12-21 03:26:56
如果最新文檔中xml元素的順序發生變化,該怎麼辦?即使文檔具有相同的語義,文本比較也會顯示文檔不同。 海事組織你需要在進行任何比較之前對下載的版本進行排序。看看http://stackoverflow.com/questions/2788404/sort-xml-nodes-with-php – xvga 2011-12-20 09:03:54
@xvga你沒有很好的理由使事情變得複雜。如果沒有關於詞彙的詳細知識,你不能僅僅假定元素順序對於語義是重要的。此外,即使文檔可能在語義上相同,應用程序仍然可能對更改感興趣。 (想想例如評論的變化) – 2012-01-22 10:24:35