关于MSXML更改xml文件,removeChild方法成功但是文件依旧没有改变mxl文件

来源:互联网 发布:淘宝店铺如何做爆款 编辑:程序博客网 时间:2024/05/01 09:23
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() ;


大概代码如上。。。最后得到的xml文件一直未更改。。。。在网上荡了一整天最后得大神点播

原因:最后还要save一下

pDoc->save((LPCTSTR)xmlpath) ;

将文件在原目录下保存就ok了

0 0
原创粉丝点击