工作中,经常和XML打交道,最近抽空实现了一个通用解析XML的库,已归档在GitHub,详情点击:ComXmlLib。如果您无法访问GitHub,点击此处下载(链接是初版,无法和GitHub同步,如需要最新版,请移步GitHub)。

工程是VS2012创建的,由于是初版,还未来得做优化,感兴趣的朋友可以一起维护,目前只支持utf-8格式,解析XML用的是pugixml。设置XML编码格式如下:

<?xml version="1.0" encoding="UTF-8"?>

然后用记事本打开,如下图改成utf-8(确保与XML声明一致):

ComXmlLib可以获取任意一个XML节点信息,包括节点名称、子节点、父节点、兄弟节点、属性等,您也可以根据自己的需要进行扩充。

本例抛砖引玉,希望对您有帮助!

一个简单的例子:

XML结构如下:

<?xml version="1.0" encoding="UTF-8"?>
<root>
<gridctrl>
<param column_width="10"/>
<param column_width="10" column_height="20"/>
<param column_width="10"/>
<test column_width="10"/>
</gridctrl>
<Edit>
</Edit>
</root>

获取XML整个结构:

char* xml = "D:\\GitHub\\ComXmlLib\\config.xml";
const XmlConstruct::ItemPtr rootNodePtr = CXOAPI_GetNode(xml);

获取某个节点(传入XML节点路径,路径用“|”分开):

const XmlConstruct::ItemPtr gridctrlNodePtr = CXOAPI_GetNode(rootNodePtr,"root|gridctrl");

获取某个值:

std::string val = CXOAPI_GetValue(xml, "root|gridctrl|param", "column_width");

C++解析XML的通用库的更多相关文章

  1. python3 解析xml

    转载:http://www.jb51.net/article/79494.htm 这篇文章主要为大家详细介绍了深入解读Python解析XML的几种方式,以ElementTree模块为例,演示具体使用方 ...

  2. ACEXML解析XML文件——我是如何学习并在短时间内掌握一个库的使用方法的

    最近做的C++项目中需要使用xml文件保存一些信息,程序启动时会读取这些信息.最终经过主程的评测,决定使用ACEXML库来读取解析XML文件. 好吧,至于为什么选择ACEXML库,我就不说了.既然选择 ...

  3. python优秀库 - 使用xmltodict解析xml文档

    上次讲到如何使用BeautifulSoup解析XML文档,今天发现另外一个python库xmltodict(https://github.com/martinblech/xmltodict)也很简单. ...

  4. Ajax实现xml文件数据插入数据库(一)--- 构建解析xml文件的js库

    Ajax实现将xml文件数据插入数据库的过程所涉及到的内容比较多,所以对于该过程的讲解本人打算根据交互的过程将其分为三个部分,第一部分为构建解析xml文件的javascript库,第二部分为ajax与 ...

  5. XML概念定义以及如何定义xml文件编写约束条件java解析xml DTD XML Schema JAXP java xml解析 dom4j 解析 xpath dom sax

    本文主要涉及:xml概念描述,xml的约束文件,dtd,xsd文件的定义使用,如何在xml中引用xsd文件,如何使用java解析xml,解析xml方式dom sax,dom4j解析xml文件 XML来 ...

  6. 用 ElementTree 在 Python 中解析 XML

    用 ElementTree 在 Python 中解析 XML 原文: http://eli.thegreenplace.net/2012/03/15/processing-xml-in-python- ...

  7. 【javaweb学习】解析XML

    XML解析方式有两种 dom:Document Object Model文档对象模型,是w3c组织推荐的解析方式 sax:Simple Api XML不是官方标准,但它是XML社区实际上的标准,几乎所 ...

  8. dom4j如何解析XML文件

    最近在 一些对xml文件的操作,下面简单写一个dom4j解析xml文件并将其封装到一个javabean中的例子,只是具有针对性的,不是通用的,仅供参考哦~~ 首先说:dom4j是一个java的XML ...

  9. SQL 存储过程 解析XML

    第一种说明: 我看过这样一篇文章,如下 在SQL   Server2005中,微软延续了   2000中一个特性(即支持XML类型的数据),并加强了对XML   数据列.XML变量以及XML索引的支持 ...

随机推荐

  1. Mybatis入门(四)------联表查询

    Mybatis联表查询 一.1对1查询 1.数据库建表 假设一个老师带一个学生 CREATE TABLE teacher( t_id INT PRIMARY KEY, t_name VARCHAR(3 ...

  2. nova 通过 python curl 创建虚拟机---keystone v3

    #! /bin/python #coding=utf- import urllib2 import json import requests # token post_url = 'http://10 ...

  3. kernel 通知链

    原文链接: 深入理解linux网络技术内幕读书笔记(四)--通知链 概述 [注意] 通知链只在内核子系统之间使用. 大多数内核子系统都是相互独立的,因此某个子系统可能对其它子系统产生的事件感兴趣.为了 ...

  4. 90%的开发都没搞懂的CI和CD!

    据IDC统计,2017年,DevOps的全球软件市场已达到约39亿美元的水平,预计到2022年市场将达到80亿美元左右! 在敏捷软件开发环境中,工作模型和操作需要对公司不断变化的需求具有超级灵活的能力 ...

  5. 基于伪分布式Hadoop搭建Hive平台详细教程

    一.搭建环境的前提条件 环境:Linux系统 Hadoop-2.6.0 MySQL 5.6 apache-hive-2.3.7 这里的环境不一定需要和我一样,基本版本差不多都ok的,所需安装包和压缩包 ...

  6. Vue最全知识点

    声明:本篇文章纯属笔记性文章,非整体原创,是对vue知识的整理, 基础篇 说说你对MVVM的理解 Model-View-ViewModel的缩写,Model代表数据模型,View代表UI组件,View ...

  7. WPF新手快速入门系列 3.MVVM

    [概要] 这一章主要讲述,讲述MVVM模式和用法. 如有学习过程中想交流学习.疑惑解答可以来此QQ群交流:580749909.(所有涉及到的源码都上传到了群文件里) 希望加群的人提问时尽量想清楚自己的 ...

  8. Python数据清洗:提取爬虫文本中的电话号码

    步骤索引 效果展示 注意事项 代码 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知识. ...

  9. Python开发的入门教程(八)-迭代

    介绍 本文主要介绍Python中迭代的基本知识和使用 什么是迭代 在Python中,如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们成为迭代(Ite ...

  10. Volatile关键字&&DCL单例模式,volatile 和 synchronized 的区别

    Volatile 英文翻译:易变的.可变的.不稳定的. 一.volatile 定义及用法 多个线程的工作内存彼此独立,互不可见,线程启动的时候,虚拟机为每个内存分配一块工作内存,不仅包含了线程内部定义 ...