前端之家收集整理的这篇文章主要介绍了
用tinyxml 库创建并读写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('\0')};
-
- // 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('\0')};
- _tcscpy(tcharValue,strUnicode.c_str());
- char chUtf8[MAX_PATH*4] = {'\0'};
- 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());