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")); }
相关文章推荐
- MFC下XML遍历同名节点(Node)
- XmlDocument节点遍历(C#)
- Dom4j解析XML文本,遍历指定节点下的节点内容和属性,并存入List<Map<String,Object>
- xml-使用dom去遍历xml文件和获取指定节点信息
- asp 遍历xml各节点内容
- 在Delphi的XmlDom中使用XPath选中单个IXMLNode / TXmlNode 节点
- XML文件遍历实现中的下一节点获取函数--近似深度优先
- 遍历简单XML节点
- 遍历简单XML节点
- jdom遍历xml,给节点Dewey编码
- mfc 增删改 xml 节点
- 【数据库】遍历XML根下的一级节点
- Java使用Dom4J 遍历复杂XML节点
- 利用dom4j解析xml文档,自动遍历节点属性
- TinyXML 学习笔记一 遍历节点
- TreeNode 遍历兄弟节点
- 解析xml文件,遍历输出xml文件中的所有节点, 最终模仿实现struts2框架
- C# 关于XML遍历新增节点,修改属性小例
- xml中的元素(element)和节点(node)——C#
- 遍历课上例题shuiguo.xml文件中根节点的所有节点,打印节点名称和节点值