Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1488642
  • 博文数量: 226
  • 博客积分: 3997
  • 博客等级: 少校
  • 技术积分: 2369
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-19 17:26
个人简介

Never save something for a special occasion. Every day in your life is a special occasion.

文章分类

全部博文(226)

文章存档

2018年(5)

2017年(11)

2016年(1)

2015年(17)

2014年(14)

2013年(30)

2012年(5)

2011年(52)

2010年(107)

分类: 项目管理

2010-08-12 23:50:42

使用TinyXML创建和读取xml文件
 
要在C/C++中使用XML文件,你需要一个能分析XML文件的函数库。选择有很多,如libxml2,tinxml,expat等等。tinyxml很小巧,只有两个头文件和四个CPP文件。如果你不是想在浏览器中使用XML,那么tinyxml非常适合你。
 
下面以一个简单的xml文件为例,说明xml的创建和读取。
xml文件结构如下:
 

   
 
创建过程:
1、先建立一个XML文件句柄。
2、然后建立一个成员。
3、再建立一个成员,这个成员包含3个属性。
4、接下来将这个成员连接成上一个成员的子结点。
5、然后再把上一个结点连接成为XML文件的子结点。
6、最后保存这个文件。
7、释放句柄。
 
读取过程:
1、先建立一个文件句柄,如果句柄建立成功就打开一个XML文件。
2、XML文件打开后,先得到它的第一个子结点,如果子结点存在,得到这个结点的属性。
3、然后又打开这个结点的第一个子结点,读出其中的数据。
4、最后关闭文件句柄。
 
 

#include <iostream>
#include "..\\TinyXML\\tinyxml.h"
using namespace std;

void main()
{
#if 0
    char floader[200],buffer[200];
    
    // 1
    TiXmlDocument* m_xmlDoc = new TiXmlDocument();
    
    // 2
    TiXmlElement xElement("player");
    sprintf(buffer,"%d", 1);
    xElement.SetAttribute("admin", buffer);
    
    // 3
    TiXmlElement xPos("pos");
    sprintf(buffer,"%d",2);
    xPos.SetAttribute("x", buffer);
    sprintf(buffer,"%d",3);
    xPos.SetAttribute("y", buffer);
    sprintf(buffer,"%d",4);
    xPos.SetAttribute("zone", buffer);
    
    // 4、5
    xElement.InsertEndChild(xPos);
    m_xmlDoc->InsertEndChild(xElement);
    
    // 6
    sprintf(floader,"%s.xml", "antking");
    m_xmlDoc->SaveFile(floader);
    
    // 7
    delete m_xmlDoc;
    
#else
    
    char floader[200];
    int admin1,x1,y1,z1;
    
    // 1
    TiXmlDocument* m_xmlDoc;
    sprintf(floader,"%s.xml", "antking");
    m_xmlDoc = new TiXmlDocument(floader);
    
    if (m_xmlDoc->LoadFile())
    {
        
        // 2
        TiXmlElement *xPlayer = 0;
        xPlayer = m_xmlDoc->FirstChildElement("player");
        
        if (xPlayer)
        {
            
            if (xPlayer->Attribute("admin"))
                admin1= (bool)atoi(xPlayer->Attribute("admin"));
            
            // 3 
            TiXmlElement *xZone = 0;
            xZone = xPlayer->FirstChildElement("pos");
            
            x1 = (int)atoi(xZone->Attribute("x"));
            y1 = (int)atoi(xZone->Attribute("y"));
            z1 = (int)atoi(xZone->Attribute("zone"));
            
        }
        
    }
    
    // 4 
    delete m_xmlDoc;
    
    printf("isAdmin = %d\nx1 = %d, y1 = %d, z1 = %d\n",admin1,x1,y1,z1);
    
#endif
}


阅读(8821) | 评论(0) | 转发(0) |
0

上一篇:群活跃统计程序

下一篇:XML

给主人留下些什么吧!~~