zoukankan      html  css  js  c++  java
  • timyxml的简单使用

    #include <iostream>
    #include <string>
    #include <cstdio>
    #include "tinyxml.h"
    using namespace std;
    int main()
    {
    	TiXmlPrinter printer;
    	string filepath = "test.xml";
    	TiXmlDocument doc(filepath.c_str());
    	bool loadOkay = doc.LoadFile();
    
    	if (!loadOkay)
    	{	
    		printf( "Could not load test file %s. Error='%s'. Exiting.\n", filepath,doc.ErrorDesc() );
    		exit( 1 );
    	}
    	doc.Accept(&printer);
    	cout << printer.CStr() << std::endl;
    
    	TiXmlElement* root = doc.RootElement();
    	for( TiXmlNode*  item = root->FirstChild("item"); item; item = item->NextSibling("item")) 
    	{
    		printf("_______________________________________\n");
    
    		TiXmlNode* child = item->FirstChild();
    		string name = child->ToElement()->GetText();
    		if (!name.empty()) 
    		{
    			cout << "name = " << name << endl;
    		} 
    
    		child = item->IterateChildren(child);
    		string addr = child->ToElement()->GetText();
    		if (!addr.empty())
    		{
    			cout << "address = " << name << endl;
    		} 
    
    
    		child = item->IterateChildren(child);
    		string tel = child->ToElement()->GetText();
    		if (!tel.empty())
    		{
    			cout << "tel = " << tel << endl; 
    		}
    
    		child = item->IterateChildren(child);
    		string email = child->ToElement()->GetText();
    		if(!email.empty())
    		{
    			cout << "email = " << email << endl;
    		} 
    
    		cout << endl;
    
    	}
    	return 0;
    }

    test.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <phonebook>
        <!--one item behalfs one contacted person.-->
        <item>
            <name>miaomaio</name>
            <addr>Shaanxi Xi'an</addr>
            <tel>13759911917</tel>
            <email>miaomiao@home.com</email>
        </item>
        <item>
            <name>gougou</name>
            <addr>Liaoning Shenyang</addr>
            <tel>15840330481</tel>
            <email>gougou@home.com</email>
        </item>
        <!--more contacted persons.-->
        <item>
            <name>pipi</name>
            <addr>Shaanxi Xianyang</addr>
            <tel>02937310627</tel>
            <email>pipi@home.com</email>
        </item>
    </phonebook>
    

    输出:

    <?xml version="1.0" encoding="UTF-8" ?>
    <phonebook>
        <!--one item behalfs one contacted person.-->
        <item>
            <name>miaomaio</name>
            <addr>Shaanxi Xi'an</addr>
            <tel>13759911917</tel>
            <email>miaomiao@home.com</email>
        </item>
        <item>
            <name>gougou</name>
            <addr>Liaoning Shenyang</addr>
            <tel>15840330481</tel>
            <email>gougou@home.com</email>
        </item>
        <!--more contacted persons.-->
        <item>
            <name>pipi</name>
            <addr>Shaanxi Xianyang</addr>
            <tel>02937310627</tel>
            <email>pipi@home.com</email>
        </item>
    </phonebook>
    
    _______________________________________
    name = miaomaio
    address = miaomaio
    tel = 13759911917
    email = miaomiao@home.com
    
    _______________________________________
    name = gougou
    address = gougou
    tel = 15840330481
    email = gougou@home.com
    
    _______________________________________
    name = pipi
    address = pipi
    tel = 02937310627
    email = pipi@home.com
    
    请按任意键继续. . .



    <?xml version="1.0" encoding="GB2312" ?>
    <Class name="计算机软件班">
    
        <Students>
    
        <student name="张三" studentNo="13031001" sex="男" age="22">
    
        <phone>88208888</phone>
    
        <address>西安市太白南路二号</address>
    
        </student>
    
        <student name="李四" studentNo="13031002" sex="男" age="20">
    
        <phone>88206666</phone>
    
        <address>西安市光华路</address>
    
        </student>
    
        </Students>
    
        </Class>

    #include <iostream>
    #include <string>
    #include "tinyxml.h"
    #pragma comment(lib, "tinyxml.lib")
    using std::string;
    int main()
    {
    	TiXmlPrinter printer;
    	TiXmlDocument* myDocument = new TiXmlDocument();
    	myDocument->LoadFile("test.xml");
    	myDocument->Accept(&printer);
    	//std::cout << printer.CStr() << std::endl;
    
    	TiXmlElement* rootElement = myDocument->RootElement();  //Class
    
    	std::cout << rootElement->Value() << ": ";
    	std::cout << rootElement->FirstAttribute()->Value() << std::endl;
    	std ::cout << "-----------------------------------------------" << std::endl;
    
    	TiXmlElement* studentsElement = rootElement->FirstChildElement();  //Students
    	TiXmlElement* studentElement = studentsElement->FirstChildElement();  //Student
    	while ( studentElement ) 
    	{
    		TiXmlAttribute* attributeOfStudent = studentElement->FirstAttribute();  //获得student的name属性
    		while ( attributeOfStudent ) 
    		{
    			std::cout << attributeOfStudent->Name() << " : " << attributeOfStudent->Value() << std::endl;
    			attributeOfStudent = attributeOfStudent->Next();
    		}
    		TiXmlElement* phoneElement = studentElement->FirstChildElement();//获得student的phone元素
    		std::cout << "phone" << " : " << phoneElement->GetText() << std::endl;
    
    		TiXmlElement* addressElement = phoneElement->NextSiblingElement();
    		std::cout << "address" << " : " << addressElement->GetText() << std::endl;
    		std ::cout << "-----------------------------------------------" << std::endl;
    		studentElement = studentElement->NextSiblingElement();
    	}
    	return 0;
    }

    输出:

    Class: 计算机软件班
    -----------------------------------------------
    name : 张三
    studentNo : 13031001
    sex : 男
    age : 22
    phone : 88208888
    address : 西安市太白南路二号
    -----------------------------------------------
    name : 李四
    studentNo : 13031002
    sex : 男
    age : 20
    phone : 88206666
    address : 西安市光华路
    -----------------------------------------------
    请按任意键继续. . .


  • 相关阅读:
    linux 磁盘挂载及查看磁盘
    【转】Linux 如何通过命令仅获取IP地址
    【转】CentOS 7 安装配置 NFS
    【转】利用virtualenv管理Python环境
    ssh 常用命令
    JavaScript 视频教程 收藏
    MySQL Json类型的数据处理
    Nhibernate + MySQL 类型映射
    ABP框架服务层的接口与实现(增删改查)
    ABP框架源码中的Linq扩展方法
  • 原文地址:https://www.cnblogs.com/lgh1992314/p/5835150.html
Copyright © 2011-2022 走看看