MFC, MSXML6 を使用しています。
<aa>
<bb>
<cc>11</cc>
<dd>22</dd>
</bb>
</aa>
このようなXMLで
<cc>だけ<cc>33</cc>と変えたいのですが、
(<cc>11</cc> の11を33に変える。)
11を削除して33を書き込むと考えたのですが、
データのみ編集ということは可能なのでしょうか?
今のところ削除を行う関数がないようなのです。
値を変更(put_nodeValueかな?)して、再度保存するだけではないの?
回答ありがとうございます。
よくわかっていませんが、WEBベースではなく
IXMLDOMElementPtrの方で作成しております。
(IHTMLDOMENodeは使えないと思っています・・)
>(IHTMLDOMENodeは使えないと思っています・・)
関係ないかと。
put_textだった。
以下適当コード
#import msxml6.dll rename_namespace(msxml)
HRESULT test()
{
HRESULT hr = S_OK;
try
{
msxml::IXMLDOMDocumentPtr doc(MSXML.DOMDocument);
doc->validateOnParse = VARIANT_FALSE;
doc->load(Lfoo.xml);
msxml::IXMLDOMElementPtr root = doc->documentElement;
msxml::IXMLDOMNodeListPtr bb_list = root->getElementsByTagName(Lbb);
msxml::IXMLDOMElementPtr bb_element = bb_list->item[0];
msxml::IXMLDOMNodeListPtr cc_list = bb_element->getElementsByTagName(Lcc);
msxml::IXMLDOMElementPtr cc_element = cc_list->item[0];
cc_element->put_text(L22);
doc->save(Lfoo.xml);
}
catch (_com_error& e)
{
// エラー
hr = e.Error();
}
return hr;
}
int main()
{
HRESULT hr = ::CoInitialize(NULL);
if (FAILED(hr)) {
return 1;
}
hr = test();
::CoUninitialize();
return 0;
}
Blueさま
put_textでできました。
いろいろと勉強になります。
このような質問に回答いただきありがとうございました。