注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

沙漠里de烟雨

原创分享,禁止转载

 
 
 

日志

 
 

win32--tinyxml保存与创建xml文件  

2013-05-01 11:16:07|  分类: C++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

bool LoadLayoutXml(char* fileName)
{
 TiXmlDocument doc(fileName);
 if(doc.LoadFile())
 {
  TiXmlHandle hDoc(&doc);
  TiXmlElement *pRoot,*pPrarm;
  pRoot=doc.FirstChildElement("configuration");
  int defaultSum = 0;
  if(pRoot)
  {
     pPrarm=pRoot->FirstChildElement("Layout");
     while(pPrarm)
     {
     const char* pKey = (pPrarm->Attribute("key"));
     const char* pVal = pPrarm->Attribute("value");
     std::basic_string<TCHAR> layoutFileName = _ProgramName + _T(".") + this->GetStringFromXml(pVal) + _T(".config");
     if(!PathFileExists(CString(layoutFileName.c_str())))
     {
      pPrarm = pPrarm->NextSiblingElement();
      continue;
     }
     string strKey(pKey);
     if(strKey==string("Default"))
     {
      if(defaultSum==0)
      {
       _DefaultLayoutName = this->GetStringFromXml(pVal);
       defaultSum++;
      }
      else
      {
       MessageBox(NULL,_T("配置文件中存在多个默认布局!\r\n程序将以初始布局展示!"),_T("Trader"),MB_OK);
       if(!_DefaultLayoutName.empty())
       {
        _DefaultLayoutName.clear();
       }
       if(!_AllLayoutNamesMap.empty())
       {
        _AllLayoutNamesMap.clear();
       }
       return false;
      }
     }
     _AllLayoutNamesMap.insert(map<std::basic_string<TCHAR>,std::basic_string<TCHAR>>::value_type(this->GetStringFromXml(pVal),this->GetStringFromXml(pKey)));
     pPrarm = pPrarm->NextSiblingElement();
     }
  }
  else
  {
   return false;
  }
 }
 else
 {
  return false;
 }
 return true;
}


bool SaveLayoutXml(const char* fileName)
{
 if(_AllLayoutNamesMap.empty()==true) return false;
 TiXmlDocument* layoutDoc = new TiXmlDocument();
 TiXmlDeclaration *pDeclaration = new TiXmlDeclaration("1.0","UTF-8","");
 layoutDoc->LinkEndChild(pDeclaration);
 TiXmlElement* rootElement = new TiXmlElement("configuration");
 layoutDoc->LinkEndChild(rootElement);
 int layoutSum = _AllLayoutNamesMap.size();
 std::map<std::basic_string<TCHAR>,std::basic_string<TCHAR> >::iterator it = _AllLayoutNamesMap.begin();
 for(;it!=_AllLayoutNamesMap.end();it++)
 {
  TiXmlElement *pItem = new TiXmlElement("Layout");
  rootElement->LinkEndChild(pItem);
  std::string strKey = SetStringToUFT8ToXml(it->second);
  std::string strVal = SetStringToUFT8ToXml(it->first);
  pItem->SetAttribute("key",strKey.c_str());
  pItem->SetAttribute("value",strVal.c_str());
  TiXmlText *pBlank = new TiXmlText("");
  pItem->LinkEndChild(pBlank);
 }
 layoutDoc->SaveFile(fileName);

 return true;
}

保存为如下样式;
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <Layout key="Default" value="trader"></Layout>
  <Layout key="Layout" value="0000"></Layout>
  <Layout key="Layout" value="1111"></Layout>
  <Layout key="Layout" value="2222"></Layout>
  <Layout key="Layout" value="3333"></Layout>
  <Layout key="Layout" value="4444"></Layout>
  <Layout key="Layout" value="我的布局"></Layout>
</configuration>

  评论这张
 
阅读(483)| 评论(0)
推荐

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018