读大小在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
[解决办法]
内存映射
[解决办法]
内存映射