我正在尝试从网站上读取一些XML代码,并且在弄清楚我的错误在哪里时遇到了一些麻烦。使用this非常有用的帖子中的代码,我正在尝试读取已保存到桌面的文件(“H:\ MyName \ Desktop \ secLendingXML.cfm.xml”)。代码如下:
#include "stdafx.h"
#include <stdio.h>
#include <tchar.h>
#include <windows.h>
#import <msxml6.dll> rename_namespace(_T("MSXML"))
int main(/*int argc, char* argv[]*/)
{
HRESULT hr = CoInitialize(NULL);
if (SUCCEEDED(hr))
{
try
{
MSXML::IXMLDOMDocument2Ptr xmlDoc;
hr = xmlDoc.CreateInstance(__uuidof(MSXML::DOMDocument60), NULL, CLSCTX_INPROC_SERVER);
// TODO: if (FAILED(hr))...
if (xmlDoc->load(_T("H:\MyName\Desktop\secLendingXML.cfm.xml")) != VARIANT_TRUE)
{
printf("Unable to load input.xml\n");
}
else
{
printf("XML was successfully loaded\n");
xmlDoc->setProperty("SelectionLanguage", "XPath");
MSXML::IXMLDOMNodeListPtr wheels = xmlDoc->selectNodes("/Car/Wheels/*");
printf("Car has %u wheels\n", wheels->Getlength());
MSXML::IXMLDOMNodePtr node;
node = xmlDoc->createNode(MSXML::NODE_ELEMENT, _T("Engine"), _T(""));
node->text = _T("Engine 1.0");
xmlDoc->documentElement->appendChild(node);
hr = xmlDoc->save(_T("output.xml"));
if (SUCCEEDED(hr))
printf("output.xml successfully saved\n");
}
}
catch (_com_error &e)
{
printf("ERROR: %ws\n", e.ErrorMessage());
}
CoUninitialize();
}
system("PAUSE");
return 0;
}
“无法加载input.xml”消息总是显示,所以我知道我没有错误,但代码无法加载我的XML文件。
我是否需要将XML文件保存在其他位置? “。xml”之前的“.cfm”是否与阅读过程紧密相关?
为了了解我的预期方向,我希望能够从New York Fed website加载XML文件并将其读入某种数据文件,我可以自动执行数据检索过程。这样,每当网站更新时,我都会自动收到通知,并且会通过我将保存在计算机上的数据文件中的更改反映出来。如果有人也希望帮助我如何处理该部分 - 轮询间隔,跟踪网站更改等 - 这也将不胜感激。
感谢您的帮助。
答案 0 :(得分:1)
您是否需要转义路径字符串中的反斜杠? e.g。
xmlDoc->load(_T("H:\\MyName\\Desktop\\secLendingXML.cfm.xml")