我试图将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 :(得分: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);