XMLについて – プログラミング – Home

通知
すべてクリア

[解決済] XMLについて


ぱーさー
 ぱーさー
(@ぱーさー)
ゲスト
結合: 16年前
投稿: 3
Topic starter  

MFC, MSXML6 を使用しています。

<aa>
<bb>
<cc>11</cc>
<dd>22</dd>
</bb>
</aa>

このようなXMLで
<cc>だけ<cc>33</cc>と変えたいのですが、
(<cc>11</cc> の11を33に変える。)

11を削除して33を書き込むと考えたのですが、
データのみ編集ということは可能なのでしょうか?
今のところ削除を行う関数がないようなのです。


引用未解決
トピックタグ
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

値を変更(put_nodeValueかな?)して、再度保存するだけではないの?


返信引用
ぱーさー
 ぱーさー
(@ぱーさー)
ゲスト
結合: 16年前
投稿: 3
Topic starter  

回答ありがとうございます。

よくわかっていませんが、WEBベースではなく
IXMLDOMElementPtrの方で作成しております。
(IHTMLDOMENodeは使えないと思っています・・)


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

>(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;
}


返信引用
ぱーさー
 ぱーさー
(@ぱーさー)
ゲスト
結合: 16年前
投稿: 3
Topic starter  

Blueさま

put_textでできました。
いろいろと勉強になります。
このような質問に回答いただきありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました