项目交互遇到了需要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. python json、pickle

    文章部分转自:https://www.cnblogs.com/lincappu/p/8296078.html json:用于字符串和Python数据类型间进行转换pickle: 用于python特有的 ...

  2. mysql 中文乱码 修改编码 utf8

    在安装完数据库的时候,先不要创建数据库,先去更改字符集设置. show variables like 'character%'; vim /etc/my.cnf   (注意 下面的字段文件内没有时,自 ...

  3. VMmare下安装redhat

    一.虚拟机必须安装在自定义的文件夹下,虚拟硬盘文件必须存放在自定义路径下(避免中文) 二.安装时选择linux类型时必须选择red hat enterprise linux 5 64位 三.操作系统名 ...

  4. 利用Django框架实现分页 demo

  5. UML规则笔记

    一.类 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 在系统中,每个类都具有一定的职责,职责指的是类要完成什么样的功能,要承担什么样的义务 ...

  6. mysql 数据库必会题

    Linux运维班MySQL必会面试题100道 (1)基础笔试命令考察 (要求:每两个同学一组,一个口头考,一个上机实战作答,每5个题为一组,完成后换位) 1.开启MySQL服务 2.检测端口是否运行 ...

  7. HDU 4277 USACO ORZ(DFS暴搜+set去重)

    原题代号:HDU 4277 原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4277 原题描述: USACO ORZ Time Limit: 5000/1 ...

  8. (8)Linux(客户端)和Windows(服务端)下socket通信实例

    Linux(客户端)和Windows(服务端)下socket通信实例: (1)首先是Windows做客户端,Linux做服务端的程序 Windows   Client端 #include <st ...

  9. Redis 序列化方式StringRedisSerializer、FastJsonRedisSerializer和KryoRedisSerializer

    当我们的数据存储到Redis的时候,我们的键(key)和值(value)都是通过Spring提供的Serializer序列化到数据库的.RedisTemplate默认使用的是JdkSerializat ...

  10. es之java搜索文档

    1:搜索文档数据(单个索引) @Test public void getSingleDocument(){ GetResponse response = client.prepareGet(" ...