首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

读大小在50MB或以上的XML文件,该如何处理

2012-03-13 
读大小在50MB或以上的XML文件_di_IXMLDocumentXMLXMLLoadXMLDocument(WideString(FileName))XML- Acti

读大小在50MB或以上的XML文件
_di_IXMLDocument   XML;

                XML   =   LoadXMLDocument(WideString(FileName));
                XML-> Active   =   true;

                if(   !XML-> Active   )
                {
                        Application-> MessageBox( "Fail   to   open   XML   file! ",   "Error ",   MB_OK);
                        return   ;
                }

                _di_IXMLNode   root   =   XML-> DocumentElement;
                _di_IXMLNodeList   nodes   =   root-> ChildNodes;
                AnsiString   strNodeValue,   strNodeName;
                int   version   =   0;
                _di_IXMLNodeList   nodesPattern;
                if   (nodes-> Count   ==1)
                {
                        int   nSuccess   =   1;
                        for   (int   i   =   0;   i   <   nodes-> Count;   i++)
                        {
                                strNodeName   =   nodes-> Nodes[i]-> GetNodeName();
                                strNodeName   =   strNodeName.UpperCase();
                                if(strNodeName   ==   "PATTERN ")
                                        nodesPattern   =   nodes-> Nodes[i]-> ChildNodes;
                        }
                }

最后那一句nodesPattern   =   nodes-> Nodes[i]-> ChildNodes;
当我读一个46MB的XML文件的时候,花了我10多分钟,以为nodesPattern-> Count是105094也就是10万个左右NODE,
怎么办
怎么快点

[解决办法]
我觉得你不用那么处理
你先读取1M
然后再读取1M
不要一次性那么读取

当然 你的数据量那么大 使用数据库应该更加适合你
而不是XML
[解决办法]
内存映射
[解决办法]
内存映射

热点排行