先把 XML 解析到一个数组中,然后再来获得需要所需数据。用 node 的位置来作 key, 如:$arr = array (
  '/1'   => '2004-11-04 **:**:**',
  '/1/2' => '2004-11-03 **:**:**',
  ...
);既然你的 date 这么规则,用 asort() 应该就可以把你需要的时间按序排好了。如果不行,你可以在 parse XML 文档的时候把 date 转换成 timestamp, 然后 arsort() 肯定可以准确排序的。

解决方案 »

  1.   

    to  Rekcuf:
    xml文件很大(有可能达4-5M)
    你这样排序会不会很慢?
      

  2.   

    文件很大的话,不管怎么处理都会慢
    我觉得不要把它当做一个XML来处理
    只当做是一个文本
    通过正则表达式抓所有日期和它的name回来
    然后再做排序完了后再从文本里依据name抓tree结点
    但是还是用正则表达式抓用XML解析的话,
    几K的文件都很慢
      

  3.   

    我没作测试,XML 解析可能会比楼上的用正则慢一点,但实现可能方便一点。按照正则表达式抓取的话,用自定义 handler 来处理咯,这样要获取 node 层次会好办点。
      

  4.   

    请问用xpath速度怎么样?
    是在服务器段处理的吗?
      

  5.   

    可以用dom加xpath来实现,具体看php手册中dom函数库里面关于唯一的一个xpath的函数,里面有具体的例子,看一下就明白了
    步骤
    1'生成dom类
    2\进行xpath查询,返回nodeitem
    3\循环判断要得到的东西另外你xml文件的格式有问题,都不是同一个级的tag,tag名称怎么都是tree啊?有这么设计的可能性吗?
    <tree  name="1" date="2004-11-04 **:**:**">
            <tree name="2" date="##"/>
            <tree name="3" date="*****">]
                  <tree……
                  ……
            </tree></tree>
      

  6.   

    我试了一下,用dom+xpath速度特别慢(1.3M的xml文件)
    不知道有没有这种可能:
    把xml和网页用zlib压缩后发送到客户端,然后在客户端进行操作?
    或者是有其他快一些的parser?