问题描述
- MSXML更改xml是removechild方法成功,但xml文件中数据还存在
- CoInitialize(NULL) ;
//得到整个xml文档MSXML2::IXMLDOMDocumentPtr pDoc ;HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument30)) ;if(FAILED(hr)){ return ;}pDoc->load((LPCTSTR)xmlpath) ;//得到根节点MSXML2::IXMLDOMElementPtr pRoot ;pRoot = pDoc->GetdocumentElement() ;//所有子节点MSXML2::IXMLDOMNodeListPtr pNodes ;pNodes = pRoot->GetchildNodes() ;int personNumber = pNodes->Getlength() ;MSXML2::IXMLDOMNodePtr pNode ;//根节点下的节点MSXML2::IXMLDOMNodePtr pNodeAtt ;//根节点下所有节点的所有属性MSXML2::IXMLDOMNamedNodeMapPtr pNamedNodeMap ;for(int i=0;i<personNumber;i++){ pNode = pNodes->Getitem(i) ; pNamedNodeMap = pNode->Getattributes() ; pNodeAtt = pNamedNodeMap->Getitem(type) ; //判断是否有节点的某个属性是否与所找的数据相同,如果有,则删除该节点 if((CString)(pNodeAtt->GetnodeTypedValue().bstrVal) == person) { HRESULT hr = pRoot->removeChild(pNode) ; if(FAILED(hr)) break ; personNumber = personNumber-1; }}pDoc.Release() ;pRoot.Release() ;pNodes.Release() ;pNode.Release() ;pNodeAtt.Release() ;return ;
解决方案
删除后,还要调用pDoc 的save函数保存。
时间: 2025-01-21 10:56:58