XML工程配置文件的读写

  TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译,使用TinyXML进行C++ XML解析,使用简单,容易上手。
这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树。

TinyXML版本:tinyxml_2_6_2

运行环境windows

里面有两个头文件 tinystr.h tinyxml.h
四个源文件 tinystr.cpp tinyxml.cpp tinyxmlerror.cpp tinyxmlparser.cpp
一个测试test文件 xmltest.cpp

TiXmlBase:整个TinyXML模型的基类。
TiXmlAttribute:对应于XML中的元素的属性。
TiXmlNode:对应于DOM结构中的节点。
TiXmlComment:对应于XML中的注释。
TiXmlDeclaration:对应于XML中的申明部分,即<?versiong="1.0" ?>。
TiXmlDocument:对应于XML的整个文档。
TiXmlElement:对应于XML的元素。
TiXmlText:对应于XML的文字部分。
TiXmlUnknown:对应于XML的未知部分。
TiXmlHandler:定义了针对XML的一些操作。

建立一个简单的XML

<?xml version="1.0" encoding="UTF-8"?>
<School name="计算机学院">
    <Class name = "C++">
        <Student name="王玲" number="052140">
            <email>[email protected]</email>
            <address>河南</address>
        </Student>
        <Student name="宋军" number="024561">
            <email>[email protected]</email>
            <address>河北</address>
        </Student>
    </Class>
</School>

读取操作

void __fastcall TForm1::readSchoolXml()
{
    using namespace std;
    const char * xmlFile = "studentConfig.xml";
    TiXmlDocument doc;
    if (doc.LoadFile(xmlFile))
    {
        doc.Print();
    }
    else
    {
        cout << "can not parse xml studentConfig.xml" << endl;
        return;
    }
    TiXmlElement* rootElement = doc.RootElement();  //School元素
    TiXmlElement* classElement = rootElement->FirstChildElement();  // Class元素
    TiXmlElement* studentElement = classElement->FirstChildElement();  //Students
    for (; studentElement != NULL; studentElement = studentElement->NextSiblingElement() )
    {
        TiXmlAttribute* attributeOfStudent = studentElement->FirstAttribute();  //获得student的name属性
        for (;attributeOfStudent != NULL; attributeOfStudent = attributeOfStudent->Next() )
        {
            cout << attributeOfStudent->Name() << " : " << attributeOfStudent->Value() << std::endl;
        }

        TiXmlElement* studentContactElement = studentElement->FirstChildElement();//获得student的第一个联系方式
        for (; studentContactElement != NULL; studentContactElement = studentContactElement->NextSiblingElement() )
        {
            string contactType = studentContactElement->Value();
            string contactValue = studentContactElement->GetText();
            std::cout << contactType  << " : " << contactValue << std::endl;
        }
    }
}

存储操作

void __fastcall TForm1:: writeSchoolXml()
{
    using namespace std;
    const char * xmlFile = "conf/school-write.xml";
    TiXmlDocument doc;
    TiXmlDeclaration * decl = new TiXmlDeclaration("1.0", "", "");
    TiXmlElement * schoolElement = new TiXmlElement( "School" );
    TiXmlElement * classElement = new TiXmlElement( "Class" );
    classElement->SetAttribute("name", "C++");

    TiXmlElement * stu1Element = new TiXmlElement("Student");
    stu1Element->SetAttribute("name", "王玲");
    stu1Element->SetAttribute("number", "052140");
    TiXmlElement * stu1EmailElement = new TiXmlElement("email");
    stu1EmailElement->LinkEndChild(new TiXmlText("[email protected]") );
    TiXmlElement * stu1AddressElement = new TiXmlElement("address");
    stu1AddressElement->LinkEndChild(new TiXmlText("河南"));
    stu1Element->LinkEndChild(stu1EmailElement);
    stu1Element->LinkEndChild(stu1AddressElement);

    TiXmlElement * stu2Element = new TiXmlElement("Student");
    stu2Element->SetAttribute("name", "宋军");
    stu2Element->SetAttribute("number", "024561");
    TiXmlElement * stu2EmailElement = new TiXmlElement("email");
    stu2EmailElement->LinkEndChild(new TiXmlText("[email protected]"));
    TiXmlElement * stu2AddressElement = new TiXmlElement("address");
    stu2AddressElement->LinkEndChild(new TiXmlText("河北"));
    stu2Element->LinkEndChild(stu2EmailElement);
    stu2Element->LinkEndChild(stu2AddressElement);

    classElement->LinkEndChild(stu1Element);
    classElement->LinkEndChild(stu2Element);
    schoolElement->LinkEndChild(classElement);

    doc.LinkEndChild(decl);
    doc.LinkEndChild(schoolElement);
    doc.SaveFile(xmlFile);
}
时间: 2024-10-18 18:46:40

XML工程配置文件的读写的相关文章

4.IDEA使用maven编译工程之后xml等配置文件丢失问题

1.使用maven编译工程之后xml等配置文件丢失的问题: 1.1工程编译之后配置文件不见了,导致工程无法访问: 1.2解决办法:在pom.xml中加入如下配置就搞定了: <resources> <resource> <directory>src/main/java</directory> <excludes> <exclude>**/*.java</exclude> </excludes> </reso

配置文件的读写(转载自逆心)

配置文件的读写 System.ConfigurationManager类用于对配置文件的读取.其具有的成员如下: 一.AppSettings AppSetting是最简单的配置节,读写非常简单. 名称 说明 AppSettings 获取当前应用程序默认配置的 AppSettingsSection 数据 ConnectionStrings 获取当前应用程序默认配置的 ConnectionStringsSection 数据 <?xml version="1.0" encoding=&

配置文件的读写

System.ConfigurationManager类用于对配置文件的读取.其具有的成员如下: 一.AppSettings AppSetting是最简单的配置节,读写非常简单. 名称 说明 AppSettings 获取当前应用程序默认配置的 AppSettingsSection 数据 ConnectionStrings 获取当前应用程序默认配置的 ConnectionStringsSection 数据 <?xml version="1.0" encoding="utf

mybatis-config.xml核心配置文件

jar包下载地址: http://92find.com/ ******************************************* 开发的具体步骤: 1:下载mybatis-3.2.2jar包并导入工程: 2:编写MyBatis核心配置文件:(configuration-xml) 3:创建实体类:POJO(开发数据库的字段最好与POJO的命名相同.方便后续操作) 4:编写DAO层SQL映射文件(mapper.xml) 5:创建测试类(实现步骤): 读取全局配置文件: 创建sqlSe

c#读取xml文件配置文件Winform及WebForm-Demo具体解释

我这里用Winform和WebForm两种为例说明怎样操作xml文档来作为配置文件进行读取操作. 1.新建一个类,命名为"SystemConfig.cs".代码例如以下: <span style="font-family:Microsoft YaHei;font-size:14px;">using System; using System.Collections.Generic; using System.Text; using System.Xml;

MyBatis 中XML映射配置文件

XML映射配置文件 MyBatis的XML配置文件包含了影响MyBatis行为很深的设置和属性信息.XML文档的高级层级结构如下: properties Settings 这些及其重要的调整,他会修改MyBatis在运行时的行为方式.下面这个表格描述了设置信息,他们的含义和默认值: typeAliases 类型别名是为java类型命名一个短的名字.他和XML的配置有关,只用来减少类完全限定名的多余部分.例如: typeHandlers 无论是MyBatis在预处理语句中设置一个参数,还是从结果集

利用opencv的FileStorage类实现XML/YAML文件的读写

FileStorage是opencv2.0以后专门用来读写XML/YAML文件的类,标准的C++实现.利用好XML文件可以极大地方便我们对中间数据的处理. 官方文档: (1) http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/core/file_input_output_with_xml_yml/file_input_output_with_xml_yml.html#fileinputoutputxmlyaml (2) htt

Log4j(四)XML形式配置文件

参考文章 http://willow-na.iteye.com/blog/347340 (1)配置文件 下面是直接从那篇文章拿过来的代码,做了一些修改,后面也会补上一些其他的内容,希望原作者不会介意 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration

C语言ini格式配置文件的读写

依赖的类 1 /*1 utils.h 2 *# A variety of utility functions. 3 *# 4 *# Some of the functions are duplicates of well known C functions that are not 5 *# standard. 6 *2 License 7 *[ 8 *# Author: Werner Stoop 9 *# This software is provided under the terms of