C++读取XML文件 我用VisualC++做了MSXML6库的练习,以动摇我对Python语言的依赖性,用于分析大文件。 我一直在学习msdn教程,但是当用一个大于300MB的XML文件替换一个更大的文件时,程序显示了一个错误,即无法找到该文件,随后的变量为NULL
教程:C++读取XML文件 我用VisualC++做了MSXML6库的练习,以动摇我对Python语言的依赖性,用于分析大文件。 我一直在学习msdn教程,但是当用一个大于300MB的XML文件替换一个更大的文件时,程序显示了一个错误,即无法找到该文件,随后的变量为NULL,c++,xml,msxml6,C++,Xml,Msxml6,教程: 我非常感谢这些帮助。 在谈论XML DOM时,您应该认为这只是通过XML文件的完全分析而在内存中创建的一个内存数据库。通过DOM方法处理大型XML文件是一种非常糟糕的做法,因为它消耗了大量内存,而且性能低下。内容本身、索引和交叉链接等等。就性能而言,即使是10MB的XML DOM也是一件值得注意的事情,而且您将获得30倍的性能 相反,在大型XML文件上,您应该使用SAX解析方法,这种方法甚至可以对无限的XML流进行操作。您可以存储感兴趣的XML摘录,而忽略其他内容。非常感谢,在处理大量数
<>我非常感谢这些帮助。 在谈论XML DOM时,您应该认为这只是通过XML文件的完全分析而在内存中创建的一个内存数据库。通过DOM方法处理大型XML文件是一种非常糟糕的做法,因为它消耗了大量内存,而且性能低下。内容本身、索引和交叉链接等等。就性能而言,即使是10MB的XML DOM也是一件值得注意的事情,而且您将获得30倍的性能
相反,在大型XML文件上,您应该使用SAX解析方法,这种方法甚至可以对无限的XML流进行操作。您可以存储感兴趣的XML摘录,而忽略其他内容。非常感谢,在处理大量数据时,我仍然不知道很多事情,我感谢您抽出时间给我一些建议。
HRESULT hr = S_OK;
IXMLDOMDocument *pXMLDom = NULL;
IXMLDOMNodeList *pNodes = NULL;
IXMLDOMNode *pNode = NULL;
BSTR bstrQuery1 = NULL;
BSTR bstrQuery2 = NULL;
BSTR bstrNodeName = NULL;
BSTR bstrNodeValue = NULL;
DOMNodeType DOMType;
VARIANT varNodeValue;
VARIANT_BOOL varStatus;
VARIANT varFileName;
VariantInit(&varFileName);
CHK_HR(CreateAndInitDOM(&pXMLDom));
CHK_HR(VariantFromString(L"TestDoc.xml", varFileName));
CHK_HR(pXMLDom->load(varFileName, &varStatus));
if (varStatus != VARIANT_TRUE)
{
CHK_HR(ReportParseError(pXMLDom, "Failed to load DOM from TestDoc.xml"));
initSuccessful = false;
}
else
{
//Assigns the DOM object as a member variable to be used in other methods
pXMLDomClassVar = pXMLDom;
initSuccessful = true;
}