2010-10-22 37 views
1

我試圖得到一個XML文件進行排序,並沒有運氣。一天半之後,我需要專家的幫助。謝謝。如何對多維XML文件進行排序?

我的XML文件(簡稱爲例子):

<?xml version="1.0" encoding="iso-8859-1"?> 
<deadlines> 
    <deadline> 
     <date>2010-06-01</date> 
     <text>Application for Summer Due</text> 
    </deadline> 
    <deadline> 
     <date>2010-07-01</date> 
     <text>Application for Fall Due</text> 
    </deadline> 
    <deadline> 
     <date>2010-07-31</date> 
     <text>Summer Bill Due</text> 
    </deadline> 
</deadlines> 

我的PHP:

<?php 

$xml = simplexml_load_file($_SERVER['DOCUMENT_ROOT'].'/feeds/deadlines.xml'); 

// start THIS WORKS 
echo'<pre>'; 
foreach($xml as $deadline) echo <<<EOF 
    Date: {$deadline->date} 
    Text: {$deadline->text} 


EOF; 
echo'</pre>'; 
// end THIS WORKS 

?> 

有沒有人有一個簡單的PHP的解決方案之前,排序上的 「日期」 XML文件回顯屏幕?

感謝

+0

[排序的SimpleXML對象的數組]的可能重複(http://stackoverflow.com/questions/2119686/sorting-an-array-of-simplexml-objects) – Gordon 2010-10-22 19:06:16

+0

由於戈登,但它不是一個重複。我在「對SimpleXML對象數組進行排序」中測試了代碼,並且它們都不起作用。當通過simplexml_load_file()處理時,那裏的解決方案不處理XML。 – 2010-10-26 13:03:52

+0

仍在尋找解決方案,如果有人試圖對XML文件進行排序。在這4天內:(感謝。 – 2010-10-26 13:06:20

回答

5

好了,遺憾的房子周圍發生之前 - 我加爲了清楚而以不同的答案,但使用的排序代理技術,我掛。

function xsort(&$nodes, $child_name, $order=SORT_ASC) 
{ 
    $sort_proxy = array(); 

    foreach ($nodes as $k => $node) { 
     $sort_proxy[$k] = (string) $node->$child_name; 
    } 

    array_multisort($sort_proxy, $order, $nodes); 
} 

$structure = '<?xml version="1.0" encoding="utf-8" ?> 
<deadlines> 
    <deadline> 
     <date>2010-06-01</date> 
     <text>Application for Summer Due</text> 
    </deadline> 
    <deadline> 
     <date>2010-07-01</date> 
     <text>Application for Fall Due</text> 
    </deadline> 
    <deadline> 
     <date>2010-07-31</date> 
     <text>Summer Bill Due</text> 
    </deadline> 
</deadlines>'; 

$xml = simplexml_load_string($structure); 
$nodes = $xml->xpath('/deadlines/deadline'); 

// Sort by date, descending 
xsort($nodes, 'date', SORT_DESC); 
var_dump($nodes); 
+0

難道你不能用xpath?'$ xml-> xpath('/ deadlines/deadline/date')來做這個嗎?' – Robin 2010-10-26 16:50:51

+0

羅賓,那隻會給你一個日期數組,而不是OP所排序的截止日期節點 – 2010-10-26 17:26:14

+0

Nev ...剛剛從午餐回來,複製並粘貼你的代碼並逐字運行它(但你已經知道:)所以我認爲我可以移動它從這裏轉發並調整它 - 也就是說,我需要能夠讀取XML,我看到你已經將代碼分配給$ var了,我將盡快處理它,然後很快回復。綠色的答案按鈕在這個壞男孩 – 2010-10-26 18:10:17

相關問題