Анализирам XML файл с LibXML и трябва да сортирам записите по дата. Всеки запис има две полета за дата, едно за кога е публикувано и едно за кога е актуализирано.
<?xml version="1.0" encoding="utf-8"?>
...
<entry>
<published>2009-04-10T18:51:04.696+02:00</published>
<updated>2009-05-30T14:48:27.853+03:00</updated>
<title>The title</title>
<content>The content goes here</content>
</entry>
...
XML файлът вече е подреден по актуализирана дата, като най-скорошната е първа. Мога лесно да обърна това, за да поставя по-старите записи на първо място:
my $parser = XML::LibXML->new();
my $doc = $parser->parse_file($file);
my $xc = XML::LibXML::XPathContext->new($doc->documentElement());
foreach my $entry (reverse($xc->findnodes('//entry'))) {
...
}
Трябва обаче да обърна обратното сортиране на файла по дата на публикуване, а не по дата на актуализиране. Как мога да направя това? Времето също изглежда малко странно. Трябва ли първо да нормализирам това?
Благодаря!
Актуализация: След като се занимавах с пространството от имена на XPath и се провалих, направих функция, която анализира XML и съхранява стойностите, от които се нуждаех, в хеш. След това използвах голо sort
за сортиране на хеша, което сега работи добре.