linux tinyxml删除任意给定节点

来源:互联网 发布:滚筒洗衣机 知乎 编辑:程序博客网 时间:2024/06/06 15:02

bool RemoveNode(string& szFileName)
{
  TiXmlDocument myDocument(szFileName);   
   bool loadOkay = myDocument.LoadFile();
   if(loadOkay == false)
    return false;
   //获得根元素
  TiXmlElement *rootElement = myDocument.RootElement();
  if(rootElement == NULL)
   return false;
  //获得根结点
  TiXmlNode *pRootNode = rootElement->ToElement();
  //获得根结点下的第一个元素
  TiXmlElement *pChild = rootElement->FirstChildElement();
  //获得根结点下的第一个节点
  TiXmlNode *pTempNode = pChild->ToElement();
  
  TiXmlAttribute *IDAttribute = NULL;
  
  do
  {
    //获得节点下的元素
    pChild = pTempNode->ToElement();
    IDAttribute = pChild->FirstAttribute();    
    if(strcmp("2", IDAttribute->Value()) == 0)
    {
      rootElement->RemoveChild(pTempNode);
      myDocument.SaveFile(szFileName);
    } 
    if(pTempNode != NULL)
     pTempNode = pTempNode->NextSibling();
  }while(pTempNode);
  
  
  return true; 
}