博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++解析XML字符串
阅读量:5097 次
发布时间:2019-06-13

本文共 1485 字,大约阅读时间需要 4 分钟。

  项目交互遇到了需要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 
#include
  具体解析则需要根据项目需求进行相关操作,本例主要是解析xml固定节点下子节点数据集:
void AnalyseFeatureTolist(char *pszXml,list
*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的功能,根据项目不同要求可以进行扩展了解。

 

 

 

转载于:https://www.cnblogs.com/ultimateWorld/p/6072820.html

你可能感兴趣的文章
万能的SQLHelper帮助类
查看>>
如何在 Terminal 内可以“用惯用的编辑器”快速打开“目前正在做”的专案(project)呢?...
查看>>
uboot分析:uboot的启动过程分析
查看>>
tmux的简单快捷键
查看>>
springboot笔记04——读取配置文件+使用slf4j日志
查看>>
[Swift]LeetCode653. 两数之和 IV - 输入 BST | Two Sum IV - Input is a BST
查看>>
[Swift]LeetCode922.按奇偶排序数组 II | Sort Array By Parity II
查看>>
微信小程序的wxml文件和wxss文件在webstrom的支持
查看>>
Html5 离线页面缓存
查看>>
[php]在PHP中读取和写入WORD文档的代码
查看>>
WCF傻瓜模式写程序
查看>>
《绿色·精简·性感·迷你版》易语言,小到不可想象
查看>>
Java Web学习总结(13)Listener监听器
查看>>
开始Flask项目
查看>>
Ruby:多线程队列(Queue)下载博客文章到本地
查看>>
Android打包key密码丢失找回
查看>>
03 jQuery动画
查看>>
医药箱APP静态小项目
查看>>
安装使用eclipse
查看>>
VC6.0调试技巧(一)(转)
查看>>