您的位置:首页 > Web前端 > Node.js

MFC下XML遍历同名节点(Node)

2011-11-02 14:46 197 查看
主要还是弄清Nodelist和Node的关系。

#include <iostream>
#include <tchar.h>

#import <msxml3.dll>

int _tmain(int argc, _TCHAR* argv[])
{
CoInitialize(NULL);
//读取XML
MSXML2::IXMLDOMDocumentPtr spXMLDoc;
spXMLDoc.CreateInstance(__uuidof(MSXML2::DOMDocument30));
spXMLDoc->load(L"config.xml");
MSXML2::IXMLDOMElementPtr spRoot = spXMLDoc->documentElement; //根节点

//写入XML
MSXML2::IXMLDOMNodePtr spNewNode = spRoot->selectSingleNode(L"/Win-DMS/SharedFolders")->appendChild(
spXMLDoc->createNode(_variant_t(NODE_ELEMENT), L"Folder", L"")
);
spNewNode->text = L"D:\\123456\\";
spXMLDoc->save(_variant_t(L"config.xml"));

MSXML2::IXMLDOMNodeListPtr nolistptr = NULL;
spNewNode->get_childNodes(&nolistptr);

for (int i =0; i <nolistptr->Getlength(); i++)
{
MSXML2::IXMLDOMNodePtr nodeptr = NULL;
nodeptr = nolistptr->Getitem(i);
std::cout << "\tnodeValue: " << _bstr_t(nodeptr->nodeValue);
std::cout << std::endl;
}

spNewNode.Release();
//spNodeList.Release();
spRoot.Release();
spXMLDoc.Release();
CoUninitialize();

system("pause");
return 0;
}


判断是否有相同的元素,如果没有就加入到配置文件中去:

     MSXML2::IXMLDOMDocumentPtr spXMLDoc;
spXMLDoc.CreateInstance(__uuidof(MSXML2::DOMDocument30));
spXMLDoc->load(L"config.xml");
MSXML2::IXMLDOMElementPtr spRoot = spXMLDoc->documentElement;
MSXML2::IXMLDOMNodePtr spShareNode = spRoot->selectSingleNode(L"/Win-DMS/SharedFolders");
MSXML2::IXMLDOMNodeListPtr FolderListPtr = NULL;
spShareNode->get_childNodes(&FolderListPtr);
MSXML2::IXMLDOMNodePtr FolderNodePtr = NULL;
long len = FolderListPtr->Getlength();
for (int i =0; i <len; i++)
{
FolderNodePtr = FolderListPtr->Getitem(i);
BSTR text = FolderNodePtr->Gettext();
if(!lstrcmp((LPCWSTR)text ,szPath))
{
isSaved = TRUE;
break;
//AfxMessageBox(L"该目录已经在列表中……");
}
}
if(isSaved == FALSE)
{
m_OwnerListBox->Add(szPath,  AfxGetApp()->LoadIcon(IDI_FOLDER));
//读取XML
MSXML2::IXMLDOMNodePtr spNewNode = spRoot->selectSingleNode(L"/Win-DMS/SharedFolders")->appendChild(
spXMLDoc->createNode(_variant_t(NODE_ELEMENT), L"Folder", L"")
);
spNewNode->text = szPath;
spXMLDoc->save(_variant_t(L"config.xml"));
     }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: