加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

用tinyxml 库创建并读写xml代码截取

发布时间:2020-12-15 22:39:41 所属栏目:百科 来源:网络整理
导读:因为自己每次写完之后都忘记了 然后又要从别的地方学习再重新写 还不如记录再这里//创建 TiXmlDocument *pXmlDocument = new TiXmlDocument(m_strFilePath.c_str());// TiXmlDeclaration *pDeclaretion = new TiXmlDeclaration("1.0","UTF-8","");//创建xml
因为自己每次写完之后都忘记了  然后又要从别的地方学习再重新写  还不如记录再这里

//创建
        TiXmlDocument *pXmlDocument = new TiXmlDocument(m_strFilePath.c_str());//
        TiXmlDeclaration *pDeclaretion = new TiXmlDeclaration("1.0","UTF-8","");//创建xml声明
        pXmlDocument->LinkEndChild(pDeclaretion);
        TiXmlElement *pXmlElement = new TiXmlElement("Symbol");
        pXmlDocument->LinkEndChild(pXmlElement);    
        pXmlDocument->SaveFile(m_strFilePath.c_str());

//读
TiXmlDocument *pXmlDoc = new TiXmlDocument();
 pXmlDoc->LoadFile(strFilePath.c_str());

 TiXmlElement *pRootElement = pXmlDoc->RootElement(); 
 if (pRootElement == NULL)
 {
  return;
 }
 // 第一个子节点 
 TiXmlElement *pSignNode = pRootElement->FirstChildElement("sign"); 
 if (!pSignNode)
 {
  SAFE_DELETE(pSignNode);
  return;
 }
 while (pSignNode != NULL)
 {
  CMapSingleParameter *pMapSingleParameter = new CMapSingleParameter();
  if (!pMapSingleParameter)
  {
   SAFE_DELETE(pMapSingleParameter);
   return ;
  }
  // text
  TCHAR tcharValue[MAX_PATH * 4] = {_T('')};

  // name
  const CHAR *pszName = pSignNode->Attribute("name");
  if (pszName != NULL)
  {
   CommonUtil::UTF8ToTCHAR(pszName,tcharValue);
   pMapSingleParameter->AppendParameter(_T("name"),tcharValue);
  }
  
  // height
  const CHAR *pszHeight = pSignNode->Attribute("height");
  if (pszHeight != NULL)
  {
   CommonUtil::UTF8ToTCHAR(pszHeight,tcharValue);
   pMapSingleParameter->AppendParameter(_T("height"),tcharValue);
  }
  //Content
  const CHAR *pszContent = pSignNode->GetText();
  if (pszContent != NULL)
  {
   CommonUtil::UTF8ToTCHAR(pszContent,tcharValue);
   pMapSingleParameter->AppendParameter(_T("content"),tcharValue);
  }

  m_pLatelyVectorSymbol->push_back(pMapSingleParameter);  
  pSignNode = pSignNode->NextSiblingElement();   
 } 



//写
string strFile = m_strFilePath;
 
 //创建文档对象
 TiXmlDocument myXmlDocument;
 //加载文件数据 
 myXmlDocument.LoadFile(strFile.c_str());

 TiXmlElement *pRootElement = myXmlDocument.RootElement(); 
 if (pRootElement == NULL)
 {
  return ;
 }

 if (pRootElement != NULL)
 {
  TiXmlElement *pFirstNode = pRootElement->FirstChildElement("sign");
  if (pFirstNode == NULL)
  { 
   int nSignPos = 0;

   for (TVectorSymbol::iterator ite = m_pLatelyVectorSymbol->begin(); ite != m_pLatelyVectorSymbol->end(); ++ite)
   {
    CMapSingleParameter *pMapSingleParameter = *ite;
    TiXmlElement *insertElement = new TiXmlElement("sign");
    pRootElement->LinkEndChild(insertElement);
    xstring strUnicode = pMapSingleParameter->GetParameterValue(_T("name"));
    TCHAR tcharValue[MAX_PATH*4]= {_T('')};
    _tcscpy(tcharValue,strUnicode.c_str());
    char chUtf8[MAX_PATH*4] = {''};
    CommonUtil::TCHARToUTF8(tcharValue,chUtf8);
    insertElement->SetAttribute("name",chUtf8);


    strUnicode = pMapSingleParameter->GetParameterValue(_T("height"));
    _tcscpy(tcharValue,strUnicode.c_str());
    CommonUtil::TCHARToUTF8(tcharValue,chUtf8);
    insertElement->SetAttribute("height",chUtf8);

    strUnicode = pMapSingleParameter->GetParameterValue(_T("content"));
    _tcscpy(tcharValue,chUtf8);
    
    TiXmlText *pXmlText = new TiXmlText(chUtf8);
    pXmlText->SetCDATA(true);//添加格式化<![CDATA[]]>
    
    insertElement->LinkEndChild(pXmlText);

    m_nLatelyTotal ++; 
   }  
  }   
 } 
 myXmlDocument.SaveFile(strFile.c_str());
}


//删除节点

 string strFile = m_strFilePath;

 //创建文档对象
 TiXmlDocument myXmlDocument;
 //加载文件数据 
 myXmlDocument.LoadFile(strFile.c_str());

 TiXmlElement *pRootElement = myXmlDocument.RootElement(); 
 if (pRootElement == NULL)
 {
  return ;
 }

 TiXmlElement *pSignNode = pRootElement->FirstChildElement("sign");
 while (pSignNode != NULL)
 {
  m_nLatelyTotal --;
  TiXmlElement *pSignRemoveNode = pSignNode;
  pSignNode= pSignNode->NextSiblingElement("sign");
  pRootElement->RemoveChild(pSignRemoveNode);  
 }

 myXmlDocument.SaveFile(strFile.c_str());

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读