2010-11-14 2 views
1

Я использую библиотеку SimpleDom и нуждаюсь в помощи с функцией sortedxpath. Вот XMLКак я могу сортировать узлы XML по нескольким атрибутам с помощью SimpleDom sortedxpath?

<cal> 
<entry entry_id="1"> 
    <entry_date year="1980" month="10" day="12" /> 
    <entry_title>John Bday</entry_title> 
</entry> 
<entry entry_id="2"> 
    <entry_date year="1980" month="10" day="10" /> 
    <entry_title>Peter Bday</entry_title> 
</entry> 
<entry entry_id="3"> 
    <entry_date year="1980" month="10" day="16" /> 
    <entry_title>Allan Bday</entry_title> 
</entry> 
</cal> 

Я хотел бы, чтобы отсортировать все «входные» узлы согласно значениям «год», «месяц» и «день» атрибуты узла «entry_date», все, что в обратный порядок (последний раз сверху). Таким образом, в приведенном выше примере, я хотел бы окончательный приказ быть:

entry #3 
entry #1 
entry #2 

Вот PHP я в настоящее время, который не не работает (не выводит на всех):

$xml = simpledom_load_file("data.xml"); 
foreach ($xml->sortedXPath('entry', 'entry_date_start[@year]', SORT_DESC) as $i => $item) 
{ 
    echo($item); 
} 

Любая помощь с удовольствием оценили. Благодаря!

ответ

1

Наконец нашел правильный синтаксис методом проб и ошибок:

foreach ($xml->sortedXPath('entry', 'entry_date/@year', SORT_DESC, 'entry_date/@month', SORT_DESC, 'entry_date/@day', SORT_DESC) as $i => $item) 
{ 
    // do stuff 
} 

Я надеюсь, что это может помочь другим. Спасибо за прочтение.

Смежные вопросы