Microsoft Dom xml写入与读取操作笔记

来源:互联网 发布:考级电子琴品牌 知乎 编辑:程序博客网 时间:2024/06/05 18:31

写xml函数。文件内部路径:all->parent->child,child属性:AA,BB,CC

void writexml(){MSXML2::IXMLDOMDocumentPtr pDoc = NULL;MSXML2::IXMLDOMElementPtr  pNode = NULL;MSXML2::IXMLDOMElementPtr  pNode2 = NULL;MSXML2::IXMLDOMElementPtr  xmlRoot = NULL;MSXML2::IXMLDOMNamedNodeMapPtr pAttrMap = NULL;MSXML2::IXMLDOMNodePtr   pAttrItem = NULL;_variant_t variantvalue;HRESULT hr;hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));// 是否安装了MS XML Parser 运行库if (FAILED(hr))return ;char* AA = "aa";char* BB = "bb";char* CC = "cc";char* szXmlPath = "D:\\test.xml";pDoc->load(szXmlPath);xmlRoot = pDoc->selectSingleNode("all");if(xmlRoot == NULL){xmlRoot = pDoc->createElement(_bstr_t::_bstr_t("all"));if(xmlRoot == NULL)return ;pDoc->appendChild(xmlRoot);}pNode = xmlRoot->selectSingleNode("parent");if(pNode == NULL){pNode = pDoc->createElement(_bstr_t::_bstr_t("parent"));if(pNode == NULL)return ;xmlRoot->appendChild(pNode);}pNode2 = pNode->selectSingleNode("child");if(pNode2 == NULL){pNode2 = pDoc -> createElement(_bstr_t::_bstr_t("child"));if(pNode2 == NULL)return ;pNode->appendChild(pNode2);}pNode2->setAttribute( _bstr_t::_bstr_t("AA"), AA);pNode2->setAttribute( _bstr_t::_bstr_t("BB"), BB);pNode2->setAttribute( _bstr_t::_bstr_t("CC"), CC);pDoc->save(szXmlPath);}


读xml函数。函数执行后szValue将存放要读取的属性的值。

// 索引查找节点属性的值// szFilePath 为文件路径, szXmlPath 为节点路径// szAtrribute 为索引的属性,szValue 为索引属性的值(传出参数)bool CXmlOperate::GetXmlValue(char* szFilePath, char* szXmlPath, char* szAttribute, char* szValue){if(szValue == NULL)return false;// 传入缓冲区为空if(szFilePath == NULL)return false;// 传入文件路径为空if(szXmlPath == NULL)return false;// 传入属性路径为空if(szAttribute == NULL)return false;// 传入属性为空MSXML2::IXMLDOMDocumentPtr pDoc;MSXML2::IXMLDOMNodePtr  pNode;MSXML2::IXMLDOMNamedNodeMapPtr pAttrMap = NULL;MSXML2::IXMLDOMNodePtr   pAttrItem = NULL;HRESULT hr;hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));// 是否安装了MS XML Parser 运行库if (FAILED(hr))return  false;pDoc->load(szFilePath);pNode = pDoc->selectSingleNode(szXmlPath);if(pNode == NULL)return false;_variant_t variantvalue;pNode->get_attributes(&pAttrMap);if(pAttrMap == NULL)return false;pAttrItem = pAttrMap->getNamedItem(szAttribute);if(pAttrItem == NULL)return false;pAttrItem->get_nodeTypedValue(&variantvalue);strcpy(szValue, (char*)(_bstr_t)variantvalue);return true;}



0 0
原创粉丝点击