TinyXml高速入门(一)

TinyXml高速入门(一)

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

作者:朱金灿
来源:http://blog.csdn.net/clever101


      对于xml文件,眼下我的工作仅仅是集中在配置文件和作为简单的信息文件来用,因此我不太喜欢使用msxml这样的重量级的xml解析器,特别是使用msxml解析xml涉及到复杂的com类型转换,更是令人感觉繁琐。因此对于简单的xml文件的解析,我更愿意使用开源的TinyXml。


      首先介绍一下TinyXml吧。TinyXML是眼下很流行的一款基于DOM模型的XML解析器,简单易用且小巧玲珑,很适合存储简单数据,配置文件,对象序列化等数据量不是很大的操作,其主页是:http://www.grinninglizard.com/tinyxml/ ,眼下最新版本号是2.5.3 版本号。

TinyXml网上的教程非常多,可是我认为写得都不如何(感觉就是看完之后就没学会)。没办法,仅仅得自己整理一篇适合自己的,至于适不适合别人,就见仁见智了。我感觉xml文件本质就是小型的数据库,换个角度来说就是,你对数据库有什么操作你对xml文件就应能实现什么操作。一般而言,对数据库的操作包含下面几种:新建数据库、查询数据库、改动数据库和删除数据库。那么相应xml文件就是新建xml文件、查询xml文件的指定节点的值,改动xml文件里节点的值和删除xml文件里节点的值。


       首先我们认识一下xml文件有哪几种形式。以下我列出一些经常使用的xml文件的形式:



      上面的样例摘自《TinyXML Tutorial 中文指南》。上面有四个样例,你看到了xml文件的几种表现形式?我看到了本质来说只是是两种表现形式:属性值值在尖括号内,如<Window name=”MainFrame” x=”5″ y=”15″ w=”400″ h=”250″ />和文本在尖括号外,如<Welcome>Welcome to MyApp</Welcome>,详细例如以下图:


xml struct


     鉴于example4.xml比較复杂,以下我将以此为例介绍tinyxml的使用。


     Tinyxml使用了两种编译选择:使用标准C的char *类型或者使用STL中的std::string,当中使用预处理器TIXML_USE_STL进行控制,即加入�了TIXML_USE_STL为使用std::string的。鉴于STL的广泛使用以及其强大功能,以下我以使用std::string的tinyxml说明。

首先使用VS 2005打开tinyxmlSTL.dsp的project文件,将其编译成一个静态库,debug版本号为:tinyxmld_STL.lib,然后開始測试tinyxml库。我的測试计划是这种:首先使用tinyxml库创建example4.xml,然后将其读出来,然后查询指定节点的属性或文本,再改动example4.xml(改动当中的一些节点值和删除当中一个节点,添加�一个节点),然后再读出来以推断是否改动成功。详细是在VS 2005上新建一个控制台project:Test,注意使用多字节字符集进行编译,同一时候加入�。首先是创建xml文件的代码:


    



       不知你注意到上面的规律没有?首先父节点连接字节点使用函数LinkEndChild,用法是:pParentNode-> LinkEndChild(pChild);其次设置相似这样的结构<Window name=”MainFrame” x=”5″ y=”15″ w=”400″ h=”250″ />採用SetAttribute函数,这个函数有两个參数,前一个參数表示键,后一个參数表示键值,设置<Farewell>Thank you for using MyApp</Farewell>这样的结构採用TiXmlText类,使用LinkEndChild函数进行连结。


      上面是创建xml文件的代码,以下介绍读取xml文件的代码。打印整个xml文件的代码非常easy,代码例如以下:




   下次介绍使用tinyxml库对xml文件进行查询指定节点、删除指定节点、改动指定节点和添加�节点的使用方法。

參考文献:


1.《TinyXML新手教程


2. 《tinyxml 使用笔记与总结


3. 《TinyXML Tutorial 中文指南

















版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118212.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 茂名天源石化有限责任公司_茂名石化为什么在茂名

    茂名天源石化有限责任公司_茂名石化为什么在茂名目前来看,广东省已经拥有诸多国外化工巨头、大型民营炼化企业和不少国企的炼化项目,成为很多石化企业首选的项目落地基地。“石化业高质量发展看广东”,已经逐渐明朗。今年以来,已有恒力石化(惠州)PTA项目、东华能源(茂名)烷烃资源综合利用项目(一期)、茂名天源石化碳三碳四资源利用等项目开工今年3月31日,广东省发展改革委官网公布《广东省2021年重点建设项目计划》。在2021年重点项目名单中,广东共安排省重点项目1395个,总投资达7.28万亿元,年度计划投资8000亿元。其中新开工项目有3个,总投资约2

    2022年10月16日
    4
  • Navicat 4 激活码_通用破解码

    Navicat 4 激活码_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    71
  • Java web 实战项目案例

    Java web 实战项目案例Javaweb实战项目,采用MVC的设计模式,jdbc编程,由Javaweb+Servlet+mysql实现简单的增删改查,模糊查询,导出excel表格数据等。以下是Javaweb项目详情案例Javaweb+mysql+servlet+eclipse实现Javaweb商城管理系统https://blog.csdn.net/liqz666/article/detail…

    2022年6月28日
    31
  • ubuntu卸载WPS「建议收藏」

    ubuntu卸载WPS「建议收藏」ubuntu卸载WPSsudoapt-getpurgewps-office

    2022年5月29日
    124
  • Vue(9)购物车练习

    Vue(9)购物车练习购物车案例经过一系列的学习,我们这里来练习一个购物车的案例**需求:**使用vue写一个表单页面,页面上有购买的数量,点击按钮+或者-,可以增加或减少购物车的数量,数量最少不得少于0,点击移除按钮

    2022年8月7日
    4
  • 哪些异常是RuntimeException?Sql异常属于RuntimeException吗?Spring下SQL异常事务回滚

    哪些异常是RuntimeException?Sql异常属于RuntimeException吗?Spring下SQL异常事务回滚更多Spring事务问题请访问链接:Spring事务回滚疑难详解一,为什么框架中根本没有对Exception的一般子类进行回滚配置,异常发生时,事务都进行了回滚,说好的只会对RuntimeException(Unchecked非受检异常)回滚呢?此时,我们就有必要了解一下,RuntimeException所包含的子类具体有哪些:这时,或许你就…

    2022年7月24日
    11

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号