【资料|MFC下XML遍历同名节点(Node)】主要还是弄清Nodelist和Node的关系。
1 #include2 #include 3 4 #import 5 6 int _tmain(int argc, _TCHAR* argv[]) 7 { 8 CoInitialize(NULL); 9 //读取XML 10 MSXML2::IXMLDOMDocumentPtr spXMLDoc; 11 spXMLDoc.CreateInstance(__uuidof(MSXML2::DOMDocument30)); 12 spXMLDoc->load(L"config.xml"); 13 MSXML2::IXMLDOMElementPtr spRoot = spXMLDoc->documentElement; //根节点 14 15 //写入XML 16 MSXML2::IXMLDOMNodePtr spNewNode = spRoot->selectSingleNode(L"/Win-DMS/SharedFolders")->appendChild( 17 spXMLDoc->createNode(_variant_t(NODE_ELEMENT), L"Folder", L"") 18 ); 19 spNewNode->text = L"D:\\123456\\"; 20 spXMLDoc->save(_variant_t(L"config.xml")); 21 22 MSXML2::IXMLDOMNodeListPtr nolistptr = NULL; 23 spNewNode->get_childNodes(&nolistptr); 24 25 for (int i =0; i Getlength(); i++) 26 { 27MSXML2::IXMLDOMNodePtr nodeptr = NULL; 28nodeptr = nolistptr->Getitem(i); 29std::cout << "\tnodeValue: " << _bstr_t(nodeptr->nodeValue); 30std::cout << std::endl; 31 } 32 33 spNewNode.Release(); 34 //spNodeList.Release(); 35 spRoot.Release(); 36 spXMLDoc.Release(); 37 CoUninitialize(); 38 39 system("pause"); 40 return 0; 41 }
判断是否有相同的元素,如果没有就加入到配置文件中去:
1MSXML2::IXMLDOMDocumentPtr spXMLDoc; 2spXMLDoc.CreateInstance(__uuidof(MSXML2::DOMDocument30)); 3spXMLDoc->load(L"config.xml"); 4MSXML2::IXMLDOMElementPtr spRoot = spXMLDoc->documentElement; 5MSXML2::IXMLDOMNodePtr spShareNode = spRoot->selectSingleNode(L"/Win-DMS/SharedFolders"); 6MSXML2::IXMLDOMNodeListPtr FolderListPtr = NULL; 7spShareNode->get_childNodes(&FolderListPtr); 8MSXML2::IXMLDOMNodePtr FolderNodePtr = NULL; 9long len = FolderListPtr->Getlength(); 10for (int i =0; iGetitem(i); 13BSTR text = FolderNodePtr->Gettext(); 14if(!lstrcmp((LPCWSTR)text ,szPath)) 15{ 16isSaved = TRUE; 17break; 18//AfxMessageBox(L"该目录已经在列表中……"); 19} 20} 21if(isSaved == FALSE) 22{ 23m_OwnerListBox->Add(szPath,AfxGetApp()->LoadIcon(IDI_FOLDER)); 24//读取XML 25MSXML2::IXMLDOMNodePtr spNewNode = spRoot->selectSingleNode(L"/Win-DMS/SharedFolders")->appendChild( 26spXMLDoc->createNode(_variant_t(NODE_ELEMENT), L"Folder", L"") 27); 28spNewNode->text = szPath; 29spXMLDoc->save(_variant_t(L"config.xml")); 30}
推荐阅读
- MFC中CString、char*、int、COleDateTime之间的转换
- list|自己动手写 printf函数
- 技术学习|Tomcat 内存泄露问题
- C|大端模式 小端模式
- C|C语言指针5分钟教程
- XML|xml 解析成map
- constructor|自己用---关于进度条倒计时问题。
- Java|sitemesh&freemarker
- linux网络编程|linux名称解析函数简介——gethostbyname与getaddrinfo
- 软件编程|getopt的使用