C++ linux tinyxml读取 写入

读取--------------------------------------------------------------------------------------

bool readTinyXML()
{
 bool ret = false;
 try
 {
  char current_dir[MAXLENTH];
  memset(current_dir, 0, MAXLENTH);
  getcwd(current_dir, MAXLENTH);//getcwd获得当前应用程序路径

  strcat(current_dir, "/abc.xml");
  string xmlDir =current_dir;//注意路径传递的有效性
 //d读
  TiXmlDocument*  readDoc = new TiXmlDocument();
  if(readDoc == NULL)//容错处理
  {
   cout << "TiXmlDocument  fail"<<endl;
   return false;
  }
  bool loadOkay = readDoc->LoadFile(xmlDir.c_str());
   if (!loadOkay) {
      cout << "read fail:"<< readDoc->ErrorDesc() <<endl;
    readDoc->Clear();
    return false;
   }

   TiXmlElement* root = readDoc->RootElement();//获得根元素
   if(root == NULL)
   {
    cout<< "root element find fail"<<endl;
    readDoc->Clear();//清空内容
    return false;
   }
   TiXmlElement *pEle = root->FirstChildElement("mqtt");
   if(pEle == NULL)
   {
    readDoc->Clear();
    return false;
   }

int a,b;
    a = pEle->Attribute("nodeName-a");//第一个参数为节点属性名称
    pEle->QueryValueAttribute("nodeName-b", &b);
    readDoc->Clear();
    if(readDoc !=NULL)
    {
     delete readDoc;
     readDoc = NULL;
    }

    return true;
 }
 catch(exception ex)//异常处理
 {
  ret = false;
  cout << "exception"<<endl;
  cout <<"exception:" <<ex.what()<<endl;
  return ret;
 }
 return ret;
}

写入-------------------------------------------------------------------------------------

void writeTinyXML()
{
 char current_dir[MAXLENTH];//要保存文件的路径名称
 memset(current_dir, 0, MAXLENTH);
 getcwd(current_dir, MAXLENTH);

 strcat(current_dir, "/abc.xml");

 TiXmlDocument *pDoc = new TiXmlDocumen();
 if (NULL == pDoc)
 {
  return false;
 }
 TiXmlDeclaration *pDeclaration = new TiXmlDeclaration("1.0", "UTF-8", "");//声明头
 if (NULL == pDeclaration)
 {
  return false;
 }
 TiXmlElement *pRootEle = new TiXmlElement("root");//根元素
 if (NULL == pRootEle)
 {
  return false;
 }
 pDoc->LinkEndChild(pRootEle);

 TiXmlElement *pMqttEle = new TiXmlElement("First");//元素
 if (NULL == pMqttEle)
 {
  return false;
 }
 pMqttEle->SetAttribute("id", "1111");
  pRootEle->LinkEndChild(pMqttEle);
 pDoc->SaveFile(xmlDir);
 delete pDoc;
}

猜你喜欢

转载自blog.csdn.net/langhaijing/article/details/82785886
今日推荐