читать файл xml от конца до начала в php - PullRequest
3 голосов
/ 15 августа 2011

Я хочу прочитать xml-файл от начала до конца, предположим, что мой xml такой:

<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<note>
<to>Samy</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't Miss me this weekend!</body>
</note>

Сначала мне нужно прочитать последнюю заметку, я использую такой код

$x = $xmldoc->getElementsByTagName('note');
        $nofnews = $xmldoc->getElementsByTagName('note')->length;
        for ($i = 0; $i < $nofnews; $i++) {
            $item_title = $x->item($i)->getElementsByTagName('to')
                            ->item(0)->nodeValue;
            $item_link = $x->item($i)->getElementsByTagName('from')
                            ->item(0)->nodeValue;
                            }

спасибоВы заранее

Ответы [ 2 ]

1 голос
/ 15 августа 2011

getElementsByTagName возвращает DOMNodeList.Вы можете получить доступ к каждому элементу по его числовому индексу (от 0 до длины-1), как вы уже это делаете, но просто начните с конца, а не с начала цикла for, а затем посчитайте вниз:

$x = $xmldoc->getElementsByTagName('note');
$nofnews = $x->length;
for ($i = $nofnews-1; $i > -1; $i--)
{
    $item = $x->item($i);
    $item_title = $item->getElementsByTagName('to')
                        ->item(0)->nodeValue;
    $item_link = $item->getElementsByTagName('from')
                        ->item(0)->nodeValue;
}

Этодолжен уже к вам для вас.

0 голосов
/ 15 августа 2011

Я не уверен, что правильно понял ваш вопрос, но, кажется, вы хотите начать читать дочерние корневые элементы XML-документа в обратном порядке?

(Также пример контента, который вы даете, взят отсюда: http://www.w3schools.com/PHP/php_xml_simplexml.asp) почему бы не последовать их примеру?

Но в любом случае, это должно сработать:

<?php
$xml = simplexml_load_file("test.xml");

echo $xml->getName() . "<br />";

foreach(array_reverse($xml->children()) as $child)
  {
  // process your child element in here
  }
?>

-> использовать функцию array_reverse (): http://www.w3schools.com/php/func_array_reverse.asp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...