Php 使用xquery按顺序解析xml数据

Php 使用xquery按顺序解析xml数据,php,xml,Php,Xml,我有一个这样的xml文件 <?xml version="1.0" encoding="UTF-8"?> <gallery > <gallerydata> <galleryname> Home </galleryname> <createdat> 14/8/2010 4:53 pm </createdat> </gallerydata&g

我有一个这样的xml文件

<?xml version="1.0" encoding="UTF-8"?>
    <gallery >
    <gallerydata>
    <galleryname>
    Home
    </galleryname>
    <createdat>
    14/8/2010 4:53 pm
    </createdat>
    </gallerydata>
    <gallerydata>
    <galleryname>
    School
    </galleryname>
    <createdat>
    13/8/2010 5:19 pm
    </createdat>
    </gallerydata>
    <gallerydata>
    <galleryname>
    Company
    </galleryname>
    <createdat>
    15/8/2010 5:21 pm
    </createdat>
    </gallerydata>
    </gallery>
如何获取最新的图库数据,我指的是最新的文件数据和最后的日期


他们有什么办法吗?请帮助我,因为您的文件没有按时间顺序存储库数据,所以您只能通过循环遍历所有条目来获取最新的库条目。

如果您正在寻找一种方法来处理初始xpath查询,这可能很粗糙,我认为XPath1.0无法解析日期,因此您必须进行一些复杂的字符串比较。。。如果你同意用php来做,事实上有很多方法。。。例如:

$xml = new SimpleXmlElement($xmlStr);

$gallerydata = $xml->xpath('//gallerydata');
$nodes = array();

foreach($gallerydata as $entry)
{
  $utime = strtotime(str_replace('/', '-',$entry->createdat));
  $nodes[$utime] = $entry;
}

krsort($nodes);
$newest = array_shift($nodes);
echo $newest->asXml(); // or do wht you need to do with the entry data...
这将循环遍历已租用的节点集,并将节点放入按unix时间索引的数组中。然后我运行一个反向键排序,并将第一个元素从数组中移出。请注意,由于我使用strotime进行转换,并且您使用的是英国日期格式,因此我们必须在斜杠上进行字符串替换

$xml = new SimpleXmlElement($xmlStr);

$gallerydata = $xml->xpath('//gallerydata');
$nodes = array();

foreach($gallerydata as $entry)
{
  $utime = strtotime(str_replace('/', '-',$entry->createdat));
  $nodes[$utime] = $entry;
}

krsort($nodes);
$newest = array_shift($nodes);
echo $newest->asXml(); // or do wht you need to do with the entry data...