none
MSXMLでXMLファイルをloadできない RRS feed

  • 質問

  • MSXMLを使おうとしているのですが、よく分からない挙動が出たので相談に乗ってください。

    Windows XP, VC6, MSXML4で開発をしています。MFCは無しです。

    IXMLDomDocumentにloadでXMLファイルを読み込ませようとしています。

     

    //CoInitialize済み

    long ret;

    CComPtr< IXMLDomDocument > doc;

    ret = doc.CoCreateInstance( __uuidof( DOMDocument ) );

    ret = doc->load( _T( filepath ) );

    //doc->xmlをchar*に変換してcout

     

    のようなコード(手元にないのでスペルミス等あるかもですが)を書いています。

    このとき、あるマシンAでは正常に読み込んで標準出力にXMLが表示されるんですが、

    別のマシンB(OSやMSXMLのバージョンは同じ)ではdoc->xmlの中身は空のままです。

    ではXMLファイルがないのかというとそういう訳ではなく、fopenしてfgetcすると読めています。

    (SJISでないので日本語は化けていますが)

    XMLファイルの中身もパスも双方同じです。

    また、このとき各処理の戻り値retはそれぞれ0、つまり正常終了が返ってきています。

    loadXMLで直接"<hoge></hoge>"のように設定してやるとそれは読み込んでくれますが、ファイルをfgetcで

    vectorにため込んで&vector[ 0 ]を渡してやると、これは読めずに空っぽ+正常終了になります。

    (vectorをcoutするとちゃんと読んでいる)

     

    同じ環境(だと思っている)にも関わらず、loadの挙動が異なり、かつ戻り値は共に正常である

    ということで行き詰まっています。

    自分では環境に関する何かが原因かと思っているのですが…。

    何かアドバイスをいただければ幸いです。よろしくお願いします。

    2007年9月14日 16:03

すべての返信

  • 見当違いな回答かもしれません。

     

    読み込みは正しく出来ているのに、coutで表示されていないだけという可能性はありませんか?

    cout以外の方法でデータ内容の確認を行うか、または念のためにロケールの設定をしてみてはいかがでしょう。

     

    Code Snippet

    #include <locale.h>

     

    //main関数の最初に以下の行を追加

     setlocale(LC_ALL, "");

    2007年9月16日 11:51