現在既存のXMLファイルに新しく要素を追加するプログラムを作っています。
コンパイルは通り、実行すると読み込んだファイルをそのまま出力してしまっています。
既存のファイルに追加するのではなく、新しいXMLファイルに要素を
出力することはできました。
環境は VB.net 2005、非MFCで、現在のコードは以下のものです。
// ドキュメントのインスタンスを作成
MSXML2::IXMLDOMDocumentPtr pDoc;
HRESULT hr = pDoc.CreateInstance(MSXML2::CLSID_DOMDocument);
pDoc->put_async(VARIANT_FALSE);
VARIANT_BOOL f;
hr = pDoc->load(_variant_t(L./data.xml), &f);
// testタグ
IXMLDOMElementPtr pTest;
IXMLDOMTextPtr pText;
pDoc->createElement( _T(main), &pTest );
pDoc->createTextNode( _T(test), &pText );
pTest->appendChild( pText, NULL );
// ルートタグ
IXMLDOMElement *pRoot;
pDoc->createElement( _T(root), &pRoot );
pRoot->appendChild( pTest, NULL );
pDoc->appendChild( pRoot, NULL );
// セーブ
pDoc->put_async(VARIANT_FALSE);
hr = pDoc->save(_variant_t(L./data.xml));
エラー処理は省略しています。
新規XMLファイルではなく既存のファイルに要素を追加するにはどのように
したらよいのでしょうか?
もともとあるファイルに要素を追加したいということですよね?
試してないので、当たりか分かりませんが、
> pDoc->createElement( _T(root), &pRoot );
新しくルートノードを作成して、そこに要素を追加してるように見えるのですけど。
気になったのは、Load以降、Save以外の関数コールに結果判定が
全く無いと言う部分です。
一つ一つの処理がきちんとうまく行っているのかを確認するのが
先だと思います。
サンプルソースだとこの辺のエラー処理が省略されている場合が
あるので、サンプルに無くてもステータスを返す関数のステータス
チェックは入れるべきです。