项目交互遇到了需要VC++中解析XML字符串,故花了点时间了解了下VC++中解析XML的诸多方法主要包括三种:msxml(微软提供)、markup、TinyXml。

开始花了点时间使用msxml3,虽然也能解析出来数据,不过对数据的精细化处理个人感觉有点麻烦,最终选择了markup.

采用markup可以直接在http://www.firstobject.com/下载示例,把示例中的Markup.h、Markup.cpp拷贝到自己的项目目录中,并添加到项目中,这样就可以

使用其中的CMarkup类进行XML的相关操作了。

  在使用CMarkup类时,需要添加头文件包含其头文件,本例采用list结构体进行xml数据的接收,故头文件包含如下:  

#ifndef _XML_H
#define _XML_H
#include "Markup.h"
#include <string>
#include <list>
  具体解析则需要根据项目需求进行相关操作,本例主要是解析xml固定节点下子节点数据集:
void AnalyseFeatureTolist(char *pszXml,list<student_item_t> *lst)
{
CMarkup xml;//实例化CMarkup
xml.SetDoc((const char*)pszXml);
xml.ResetMainPos();
student_item_t pstItem;
if(xml.FindElem("Root"))
{
xml.IntoElem();//此句必须加上,进入到节点中才能继续查找
while(xml.FindElem("data"))
{
xml.IntoElem();
if(xml.FindElem("NO")){
pstItem.NO = _ttoi(xml.GetData());
}
if(xml.FindElem("NAME")){
strcpy(pstItem.NAME,xml.GetData());
}
if(xml.FindElem("SEX")){
strcpy(pstItem.SEX,xml.GetData());
}
if(xml.FindElem("REMARK")){
strcpy(pstItem.REMARK,xml.GetData());
}
lst->push_back(pstItem);
xml.OutOfElem();//跳出节点
}
xml.OutOfElem();
}
}
其中student_item_t pstItem;为定义的结构体,用来接收数据接收单条数据。
以上就是C++中通过markup解析xml字符串的操作示例,markup还有其他更多操作XML的功能,根据项目不同要求可以进行扩展了解。
 

C++解析XML字符串的更多相关文章

  1. tinyXml直接解析XML字符串

    一直都用tinyxml直接LoadFile来解析XML,发现原来也可以直接解析XML字符串. XML文件: <?xml version=\"1.0\" encoding=\& ...

  2. 解析xml字符串时报“前言中不允许有内容”错误。

    一,问题出现经过: j基于java语言webservic服务端接收客户端 传来的xml字符串用 解析时总报:org.dom4j.DocumentException: Error on line 1 o ...

  3. dom4j解析xml字符串实例

    DOM4J 与利用DOM.SAX.JAXP机制来解析xml相比,DOM4J 表现更优秀,具有性能优异.功能强大和极端易用使用的特点,只要懂得DOM基本概念,就可以通过dom4j的api文档来解析xml ...

  4. java解析xml字符串(用dom4j)

    package com.smsServer.Dhst; import java.util.HashMap; import java.util.Iterator; import java.util.Ma ...

  5. java解析xml字符串为实体(dom4j解析)

    package com.smsServer.Dhst; import java.util.HashMap; import java.util.Iterator; import java.util.Ma ...

  6. .NET解析xml字符串,通过反射给实体类对象赋值,获取实体类数据列表

    /// <summary> /// 解析xml字符串 转换为实体类列表数据 /// </summary> /// <param name="xmlStr&quo ...

  7. ORACLE 解析xml字符串-转载的

    --------------------------方法一------------------------------------- 1.xml字符串 /* <orderlist>     ...

  8. java解析xml字符串方法

    一,用DOM4J  针对无重复标签的xml字符串格式,如下: 针对此种情况可用DOM4J解析法,引入 dom4j的相关jar包代码如下: Document document=DocumentHelpe ...

  9. dom4j递归解析XML字符串所有子节点

    /** * dom4j递归解析所有子节点 * * @param childElements * @param mapEle * @return */ public Map<String, Obj ...

随机推荐

  1. pyqt5-橡皮筋控件QRubberBand

    提供一个矩形或线来指示选择或边界 一般结合鼠标事件一同协作 继承于 QWidget import sys from PyQt5.QtWidgets import QApplication, QWidg ...

  2. SQL Server2008收缩日志文件

    查询状态语句: SELECT name,log_reuse_wait_desc FROM sys.databases where name='hrsystem'; 收缩日志文件: USE [maste ...

  3. Java——容器(Set)

    [Set接口] <1>Set接口是Collection的子接口,Set接口没有提供额外的方法. <2>实现Set接口的容器类中的元素是没有顺序的,而且不可以重复. <3& ...

  4. Ubuntu 16.04下使用docker部署MySQL主从复制

    (以下docker相关的命令,需要在root用户环境下或通过sudo提升权限来进行操作.) 首先更新 软件源 https://mirrors.tuna.tsinghua.edu.cn/help/ubu ...

  5. 【CF1237C】Balanced Removals(降维)

    题意:三维平面上有n个点,每个点的坐标为(x[i],y[i],z[i]),n为偶数 现在要求取n/2次,每次取走一对点(x,y),要求没有未被取走的点在以x和y为对角点的矩形中 要求给出任意一组合法方 ...

  6. Windows Server 2003 IIS 使用 Excel.Application

    在Server2003服务器系统中,配置ASP调用CreateObject("Excel.Application")对象 1.先在服务器中安装Microsoft Excel 2.打 ...

  7. Behaviour Tree Service 中的几个函数

    Service中可以override的函数有8个,因为每个函数都有个AI版本的,所以实际上是4组函数,AI版本的和非AI版本基本一样, 他们分别是: Receive Search Start (AI) ...

  8. [CSP-S模拟测试]:串串香(KMP)

    题目传送门(内部题75) 输入格式 输入文件$ccx.in$ 每个输入文件包含多组测试数据.输入文件的第一行为一个整数$T$,表示数据组数.接下来$T$行,每行表示一组测试数据 每行一开始,两个空格隔 ...

  9. [CSP-S模拟测试]:visit(组合数学+exLucas+CRT)

    题目传送门(内部题6) 输入格式 第一行包含两个整数$T$,$MOD$:第二行包含两个整数$n$,$m$,表示$dirty$房子的位置. 输出格式 一行一个整数,表示对$MOD$取模之后的答案. 样例 ...

  10. 图像bayer格式介绍【转】

    本文转载自:http://www.cnblogs.com/whw19818/p/6223143.html 1 图像bayer格式介绍 bayer格式图片是伊士曼·柯达公司科学家Bryce Bayer发 ...