c++ - 尝试使 XML 阅读器在 C++ 中工作

标签 c++ xml msxml

我正在尝试从网站读取一些 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 文件。并将其读入某种数据文件,我可以在其中自动执行数据检索过程。这样,每当网站更新时,我都会自动收到通知,并且会反射(reflect)在我保存在计算机某处的数据文件中。如果有人也想帮助我如何处理这部分 - 轮询间隔、跟踪网站更改等 - 也将不胜感激。

感谢您提供的所有帮助。

最佳答案

您需要转义路径字符串中的反斜杠吗?例如

xmlDoc->load(_T("H:\\MyName\\Desktop\\secLendingXML.cfm.xml")

关于c++ - 尝试使 XML 阅读器在 C++ 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11036586/

相关文章:

delphi - XMLHTTP 和 "Access denied"错误

c++ - MSXML 的 loadXML 无法加载格式良好的 xml

c++ - OpenGL 累积缓冲区不工作

c++ - 覆盖语法,返回指向固定大小数组的指针的专用模板方法

python - 使用 lxml 解析 DTD 时出错

java - 将大 JSON 文件转换为 XML

javascript - MSXML : Javascript is not a scripting language

c++ - Windows 7 64 位 C++ malloc 失败

c++ - 使用 C++ 读取 tiff 图像

Android:屏幕布局在同一型号的 2 部手机上看起来不同