likaiming1 2015-03-11 13:00 采纳率: 50%
浏览 1619
已采纳

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 ;
  • 写回答

1条回答 默认 最新

  • oyljerry 2015-03-11 13:23
    关注

    删除后,还要调用pDoc 的save函数保存。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里