|
XML をファイルのように扱う(2.保存) |
|
// インスタンスの作成 MSXML2::IXMLDOMDocumentPtr pDoc(__uuidof(MSXML2::DOMDocument40)); |
|
// ルートノードの作成 pDoc->loadXML(L"<?xml version=\"1.0\" encoding=\"Shift_JIS\" ?>\n<Root/>"); MSXML2::IXMLDOMElementPtr root = pDoc->documentElement; |
|
// --------------------------------------------------------------- // ノードを追加する // out: 追加したノードポインタ // --------------------------------------------------------------- MSXML2::IXMLDOMElementPtr CFooApp::AddNode( MSXML2::IXMLDOMDocumentPtr pDoc, // 追加する文書 MSXML2::IXMLDOMElementPtr root, // 追加元ノード _bstr_t wstrNode, // 追加ノード名 _bstr_t wstrText // 追加テキストデータ ) { // ルートに子ノードを追加する MSXML2::IXMLDOMElementPtr peNew = pDoc->createElement(wstrNode); root->appendChild(peNew); // リーフテキストデータを書き込む peNew->appendChild(pDoc->createTextNode(wstrText)); return peNew; } |
|
AddNode(pDoc, root, L"AppName", L"サンプルデータ"); |
|
MSXML2::IXMLDOMElementPtr lv1, lv2, lv3; lv1 = AddNode(pDoc, root, L"AppName", L"サンプルデータ"); lv2 = AddNode(pDoc, lv1, L"Level1", L"第一階層データ"); lv3 = AddNode(pDoc, lv2, L"Level2", L"第二階層データ"); |
|
struct TEngine { _bstr_t wstrName; // 型式 _bstr_t wstrSize; // 排気量 }; struct TTire { _bstr_t wstrMaker; // メーカー名 _bstr_t wstrType; // タイプ }; struct TCar { _bstr_t wstrName; // 車名 _bstr_t wstrMaker; // メーカー名 TEngine engine; // エンジン TTire tire[4]; // タイヤ }; TCar car; |
|
// インスタンスの作成 MSXML2::IXMLDOMDocumentPtr pDoc(__uuidof(MSXML2::DOMDocument40)); // ルートノードの作成 pDoc->loadXML(L"<?xml version=\"1.0\" encoding=\"Shift_JIS\" ?>\n<Car/>"); MSXML2::IXMLDOMElementPtr root = pDoc->documentElement; MSXML2::IXMLDOMElementPtr engine, tire; // ノードを追加する AddNode(pDoc, root, L"Name", car.wstrName); AddNode(pDoc, root, L"Maker", car.wstrMaker); // ルートにエンジンノードを追加する engine = AddNode(pDoc, root, L"Engine", L"") AddNode(pDoc, engine, L"Name", car.engine.wstrName); AddNode(pDoc, engine, L"Size", car.engine.wstrSize); // ルートにタイヤノードを追加する for (int i = 0; i < 4; i++) { tire = AddNode(pDoc, root, L"Tire", L""); AddNode(pDoc, tire, L"Maker", car.tire[i].wstrMaker); AddNode(pDoc, tire, L"Type", car.tire[i].wstrType); } |
|
// XML文書を保存する pDoc->save(L"C:\\sample.xml"); |
|
|