首页 / C++ / C++使用TinyXML
C++使用TinyXML
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C++使用TinyXML,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含7468字,纯文字阅读大概需要11分钟。
内容图文
参照一:http://qaohao.iteye.com/blog/496237
参照二:http://hi.baidu.com/lnylvoeegzcgnrr/item/af68fd9cde40fc1a924f41f5
别人封装的TinyXML:
.h文件
1 #include "xml\tinyxml.h" 2 #include <string> 3usingnamespace std; 4 5#if !defined(AFX_STDAFX_H__UDXML_EF91_4EF1_A2F2_53AD89B23C30__INCLUDED_) 6#define AFX_STDAFX_H__UDXML_EF91_4EF1_A2F2_53AD89B23C30__INCLUDED_ 7 8#if _MSC_VER > 1000 9#pragma once 10#endif 11 12/****************************************************************************** 13 描述: 对tinyxml库封装的简单类: 14 1,创建、保存xml 15 2,动态创建节点,更改名称以及值;动态删除 16 3,动态增加、删除属性,遍历、读取属性名称以及值 17 18 背景: tinyxml对xml操作的接口过于分散,为了适应自己的需要,对常用的接口进行简单的封 19 装,各个接口增加注释,方便使用。 20 21 环境: WinXP+VC6 22 修改: 仇军利 EMAIL:282881515@163.COM QQ:282881515 23 版本: 2012-12-28 V1.0 24 发布: CSDN 25******************************************************************************/ 26class CUDXmlAttribute 27{ 28public: 29 CUDXmlAttribute() { m_pAttribute=NULL ; } 30 CUDXmlAttribute( TiXmlAttribute *pAttribute){ m_pAttribute=pAttribute; } 31 32// 下一个属性 33 CUDXmlAttribute Next(); 34// 前一个属性 35 CUDXmlAttribute Pre(); 36 37// 返回属性名称 38string Name(); 39// 设置属性名称 40void SetName(constchar* name); 41 42// 返回属性值string类型 43string Value(); 44// 返回属性值int类型 45int IntValue(); 46// 返回属性值double类型 47double DoubleValue(); 48// 设置属性值 49void SetValue(constchar* value); 50 51private: 52 TiXmlAttribute *m_pAttribute; 53}; 54 55class CUDXmlNodePtr 56{ 57public: 58 CUDXmlNodePtr() { m_pElement=NULL; } 59 CUDXmlNodePtr(TiXmlElement *pElement) { m_pElement=pElement; } 60 CUDXmlNodePtr(TiXmlNode* pNode) { m_pElement=pNode->ToElement(); } 61 BOOL operator==(CUDXmlNodePtr&node); 62 63// 添加新的节点 64 CUDXmlNodePtr NewChild(constchar* name); 65// 获取第一个孩子节点,默认返回第一个孩子节点 66 CUDXmlNodePtr GetFirstChild(constchar* name=NULL); 67// 获取下一个兄弟节点,默认返回下边第一个兄弟节点 68 CUDXmlNodePtr NextSibling(constchar* name=NULL); 69// 获取上一个兄弟节点,默认返回上边第一个兄弟节点 70 CUDXmlNodePtr PreSibling(constchar* name=NULL); 71// 自我销毁 72 BOOL Destory(); 73// 销毁所有孩子节点 74void DestoryAllChildren(); 75 76// 设置属性 77void SetAttribute(constchar* name, constchar* value); 78// 读取属性值 79string GetAttribute(constchar* name); 80 CUDXmlAttribute GetFirstAttribute(); 81 CUDXmlAttribute LastAttribute(); 82 83// 设置节点名称 84void SetName(constchar*name); 85// 获取节点名称 86string GetName(); 87 88// 设置节点值 89void SetValue(constchar* value); 90// 获取节点值 91string GetValue(); 92 93// 判断该节点是否为空 94 BOOL IsNull(); 95// 返回根节点 96 CUDXmlNodePtr Root(); 97 98public: 99 TiXmlElement *m_pElement; 100}; 101102class CUDXml 103{ 104public: 105// 创建xml文件 默认声明为<?xml version="1.0" encoding="UTF-8" standalone="no"?>106 BOOL CreateXml(constchar* path, constchar* version="1.0", constchar* encoding="UTF-8", constchar* standalone="no"); 107108// 打开文件109 BOOL Open(constchar* path); 110111// 保存文件112 BOOL Save(constchar* path=NULL); 113114// 获取根节点115 CUDXmlNodePtr GetRoot(); 116117// 判断该文件是否存在118 BOOL IsExist(constchar* path); 119120private: 121122 TiXmlDocument m_doc; 123}; 124#endif
.cpp文件
1 #include <windows.h> 2 #include <stdio.h> 3 #include <tchar.h> 4 #include "UDXml.h" 5 #include <io.h> 6 7 8 9 10 BOOL CUDXml::CreateXml(constchar* path, constchar* _version /*="1.0" */, constchar* _encoding /*="UTF-8" */, constchar* _standalone/*="no" */ ) 11{ 12 m_doc.LoadFile(path, TIXML_ENCODING_UTF8); 13 14 TiXmlNode *pDelar = new TiXmlDeclaration(_version, _encoding, _standalone); 15 m_doc.InsertEndChild(*pDelar);delete pDelar; 16 17 TiXmlNode *pRoot = new TiXmlElement("root"); 18 m_doc.InsertEndChild(*pRoot); 19 20return TRUE; 21} 22 23 24 BOOL CUDXml::Open( constchar* path ) 25{ 26return m_doc.LoadFile(path, TIXML_ENCODING_UTF8); 27} 28 29 BOOL CUDXml::Save(constchar* path) 30{ 31 BOOL ret; 32 33if(NULL == path) ret = m_doc.SaveFile(); 34else ret = m_doc.SaveFile(path); 35 36return ret; 37} 38 39CUDXmlNodePtr CUDXml::GetRoot() 40{ 41return m_doc.RootElement(); 42} 43 44 BOOL CUDXml::IsExist( constchar* path ) 45{ 46if(-1 != _access(path, 0)) 47return TRUE; 48else 49return FALSE; 50} 51 52 CUDXmlNodePtr CUDXmlNodePtr::NewChild( constchar* name ) 53{ 54 CUDXmlNodePtr NewNode; 55 TiXmlNode *pNode = new TiXmlElement(name); 56 57 NewNode = m_pElement->InsertEndChild(*pNode); 58 59 delete pNode; 60return NewNode; 61} 62 63BOOL CUDXmlNodePtr::IsNull() 64{ 65return NULL==m_pElement; 66} 67 68void CUDXmlNodePtr::SetAttribute( constchar* name, constchar* value ) 69{ 70 m_pElement->SetAttribute(name, value); 71} 72 73 std::string CUDXmlNodePtr::GetAttribute( constchar* name ) 74{ 75return m_pElement->Attribute(name); 76} 77 78void CUDXmlNodePtr::SetName( constchar*name ) 79{ 80 m_pElement->SetValue(name); 81} 82 83 std::string CUDXmlNodePtr::GetName() 84{ 85constchar *pName = m_pElement->Value(); 86if(NULL == pName) 87return""; 88 89return pName; 90} 91 92void CUDXmlNodePtr::SetValue( constchar* value ) 93{ 94 TiXmlNode *pText = new TiXmlText(value); 95 m_pElement->InsertEndChild(*pText); 96 delete pText; 97} 98 99 std::string CUDXmlNodePtr::GetValue() 100{ 101constchar* pText = m_pElement->GetText(); 102if(NULL == pText) 103return""; 104105return pText; 106} 107108 CUDXmlNodePtr CUDXmlNodePtr::GetFirstChild( constchar* name/*=NULL*/ ) 109{ 110if(NULL == name) 111return m_pElement->FirstChildElement(); 112else113return m_pElement->FirstChildElement(name); 114} 115116 CUDXmlNodePtr CUDXmlNodePtr::NextSibling( constchar* name/*=NULL*/ ) 117{ 118if(NULL == name) 119return m_pElement->NextSiblingElement(); 120else121return m_pElement->NextSiblingElement(name); 122} 123124 CUDXmlNodePtr CUDXmlNodePtr::PreSibling( constchar* name/*=NULL*/ ) 125{ 126if(NULL == name) 127return m_pElement->PreviousSibling(); 128else129return m_pElement->PreviousSibling(name); 130} 131132BOOL CUDXmlNodePtr::Destory() 133{ 134if(*this == Root())return FALSE; 135136return m_pElement->Parent()->RemoveChild((TiXmlNode*)m_pElement); 137} 138139CUDXmlNodePtr CUDXmlNodePtr::Root() 140{ 141 TiXmlElement *pElement = m_pElement; 142 TiXmlElement *pRoot = NULL; 143144int nType = pElement->Type(); 145while (0 != nType) 146 { 147 pRoot = pElement; 148 pElement = (TiXmlElement*)pElement->Parent(); 149 nType = pElement->Type(); 150 } 151152return pRoot; 153} 154155 BOOL CUDXmlNodePtr::operator==( CUDXmlNodePtr&node ) 156{ 157returnthis->m_pElement == node.m_pElement; 158} 159160void CUDXmlNodePtr::DestoryAllChildren() 161{ 162 m_pElement->Clear(); 163} 164165CUDXmlAttribute CUDXmlNodePtr::GetFirstAttribute() 166{ 167return m_pElement->FirstAttribute(); 168} 169170CUDXmlAttribute CUDXmlNodePtr::LastAttribute() 171{ 172return m_pElement->LastAttribute(); 173} 174175CUDXmlAttribute CUDXmlAttribute::Next() 176{ 177return m_pAttribute->Next(); 178} 179180CUDXmlAttribute CUDXmlAttribute::Pre() 181{ 182return m_pAttribute->Previous(); 183} 184185 std::string CUDXmlAttribute::Name() 186{ 187return m_pAttribute->Name(); 188} 189190 std::string CUDXmlAttribute::Value() 191{ 192return m_pAttribute->Value(); 193} 194195void CUDXmlAttribute::SetName( constchar* name ) 196{ 197 m_pAttribute->SetName(name); 198} 199200void CUDXmlAttribute::SetValue( constchar* value ) 201{ 202 m_pAttribute->SetValue(value); 203} 204205double CUDXmlAttribute::DoubleValue() 206{ 207return m_pAttribute->DoubleValue(); 208} 209210int CUDXmlAttribute::IntValue() 211{ 212return m_pAttribute->IntValue(); 213 }
原文:http://www.cnblogs.com/chechen/p/4087716.html
内容总结
以上是互联网集市为您收集整理的C++使用TinyXML全部内容,希望文章能够帮你解决C++使用TinyXML所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。