TinyXml简单使用教程

Home / Hackintosh MrLee 2015-5-13 2903

tinyXML一款很优秀的操作C++类库,文件不大,但方法很丰富,和apache的Dom4j可以披靡啊!习惯了使用java类库的我看到这么丰富的c++类库,很高兴!它使用很简单,只需要拷贝几个文件到你的工程中,没有STL也可以编译运行。
/*
 * Main.cpp
 *
 *  Created on: 2015-1-26
 *      Author: Administrator
 */
#include 
#include 
#include 
#include "tinystr.h"
#include "tinyxml.h"
using namespace std;
int main() {
	const char* filepath = "phonebookdata.xml";
	TiXmlDocument doc(filepath);
	bool loadOkay = doc.LoadFile();
	// faile to load 'phonebookdata.xml'.
	if (!loadOkay) {
		printf("Could not load test file %s. Error='%s'. Exiting.\n", filepath,
				doc.ErrorDesc());
		exit(1);
	}
	// get dom root of 'phonebookdata.xml', here root should be 'phonebook'.
	TiXmlElement* root = doc.RootElement();
	// trace every items below root.
	for (TiXmlNode* item = root->FirstChild("item"); item;
			item = item->NextSibling("item")) {
		// read name.
		TiXmlNode* child = item->FirstChild();
		const char* name = child->ToElement()->GetText();
		if (name) {
			printf("name:%s\n", name);
		} else {
			printf("name:\n");
		}
		// read address.
		child = item->IterateChildren(child);
		const char* addr = child->ToElement()->GetText();
		if (addr) {
			printf("addr:%s\n", addr);
		} else {
			printf("addr:\n");
		}
		// read telephone no.
		child = item->IterateChildren(child);
		const char* tel = child->ToElement()->GetText();
		if (tel) {
			printf("tel:%s\n", tel);
		} else {
			printf("tel:\n");
		}
		// read e-mail.
		child = item->IterateChildren(child);
		const char* email = child->ToElement()->GetText();
		if (email) {
			printf("email:%s\n", email);
		} else {
			printf("email:\n");
		}
		printf("\n");
	}
	TiXmlElement* writeRoot = doc.RootElement();
	TiXmlNode* newNode = new TiXmlElement("item");
	const TiXmlNode* name4NewNode = new TiXmlElement("name");
	newNode->InsertEndChild(*name4NewNode)->InsertEndChild(TiXmlText("pipi"));
	const TiXmlNode* addr4NewNode = new TiXmlElement("addr");
	newNode->InsertEndChild(*addr4NewNode)->InsertEndChild(
			TiXmlText("Shaanxi Xianyang"));
	const TiXmlNode* tel4NewNode = new TiXmlElement("tel");
	newNode->InsertEndChild(*tel4NewNode)->InsertEndChild(
			TiXmlText("02937310627"));
	const TiXmlNode* email4NewNode = new TiXmlElement("email");
	newNode->InsertEndChild(*email4NewNode)->InsertEndChild(
			TiXmlText("pipi@home.com"));
	writeRoot->InsertEndChild(*newNode);
	doc.SaveFile();
	return 0;
}
xml文件


    
    
        miaomaio
        Shaanxi Xi'an
        13759911917
        miaomiao@home.com
    
    
        gougou
        Liaoning Shenyang
        15840330481
        gougou@home.com
    
    
    
        pipi
        Shaanxi Xianyang
        02937310627
        pipi@home.com
    
    
        pipi
        Shaanxi Xianyang
        02937310627
        pipi@home.com
    

本文链接:https://www.it72.com/2870.htm

推荐阅读
最新回复 (0)
返回