0

Web サイトから XML コードを読み取ろうとしていますが、エラーがどこにあるかを特定するのに少し苦労しています。この非常に役立つ投稿のコードを使用して、デスクトップに保存したファイル (「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」は読み取りプロセスを台無しにしていますか?

私の意図する方向性を理解するために、ニューヨーク連銀の Web サイトから XML ファイルを読み込んで、データ取得プロセスを自動化できる何らかのデータ ファイルに読み込めるようにしたいと考えています。そうすれば、ウェブサイトが更新されるたびに自動的に通知され、コンピューターのどこかに保存されているデータ ファイルの変更に反映されます。誰かが私がその部分をどのように進めているか、つまりポーリング間隔、Web サイトの変更の追跡などについても支援したい場合は、それもありがたいです。

助けてくれてありがとう。

4

1 に答える 1

1

パス文字列のバックスラッシュをエスケープする必要がありますか? 例えば

xmlDoc->load(_T("H:\\MyName\\Desktop\\secLendingXML.cfm.xml")
于 2012-06-14T15:42:57.410 に答える