从结尾读取xml文件,在php中启动

时间:2011-08-15 09:04:01

标签: php xml xml-parsing

我想从头开始读取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 个答案:

答案 0 :(得分:1)

getElementsByTagName会返回DOMNodeList。您可以按照它的数字索引(0到length-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;
}

这应该已经适合你了。

答案 1 :(得分:0)

我不确定我是否理解你的问题,但似乎你想开始阅读  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
  }
?>

- &GT;使用array_reverse()函数:http://www.w3schools.com/php/func_array_reverse.asp