现在的代码:
uses
  XMLIntf, XMLDoc  XMLDocument :IXMLDocument;
  XMLNode, XMLNode2:IXMLNode;  XMLDocument := XMLDoc.TXMLDocument.Create( 'E:\test.xml' );
  XMLDocument.Active := True;
  XMLNode := XMLDocument.DocumentElement;
  for  i:=0  to XMLNode.ChildNodes.Count-1 do
  begin
    XMLNode2:=XMLNode.ChildNodes.Get(i);
    for j := 0 to XMLNode2.AttributeNodes.Count-1 do
    begin
      ....
    end;
  end;  XMLDocument.Active:=False;
  XMLNode2:=Nil;
  XMLNode:=Nil;
  XMLDocument:=Nil;

解决方案 »

  1.   

    用DOM解析当然比较慢。要快可以用SAX或者直接写代码解析XML字符串。
      

  2.   

    感谢halfdream提示,但我对SAX不了解,有没有什么例子参考一下?
      

  3.   

    你在GOOGLE上搜关键词DELPHI SAX ,会有一堆资料的。。比如:
    http://home.iprimus.com.au/kbwood/DelphiXML/BookCode/Chapter%2014/
      

  4.   

    你需要修改XML文件么?如果只是需要读取出来,那用SAX就没错了。
    除了楼上介绍的SAX for Pascal外,MSXML4.0也能做SAX解析。
      

  5.   

    你可以先看看http://community.csdn.net/Expert/topic/3898/3898397.xml?temp=.7485315中的MSXML的使用方法。同时MSXML中就集成了SAX。你需要自己写一个ISaxContentHandler(其实是一个Callback的集合),然后代入引擎中就可以了。SAX本身并不能提高解析的速度,但是通过SAX的机制,你却能够通过舍弃对部分元素的处理来提高对有用信息的解析命中率,从而提高执行的效率。不过我个人觉得MSXML的DOM解析速度也相当的高,也许你不一定需要SAX,那毕竟麻烦的多。
      

  6.   

    不要用MSXML,使用原生的pascal 解析器
      

  7.   

    Fast script中就有一个xml解析器