c++ 解析xml文件
解析的xml文件
<?xml version="1.0" encoding="utf-8"?><Objects><person><label>15</label><xmin>207</xmin><ymin>106</ymin><xmax>489</xmax><ymax>381</ymax><score>0.99566</score></person><person><label>15</label><xmin>546</xmin><ymin>57</ymin><xmax>912</xmax><ymax>395</ymax><score>0.984854</score></person><person><label>15</label><xmin>898</xmin><ymin>103</ymin><xmax>1223</xmax><ymax>382</ymax><score>0.958104</score></person><person><label>15</label><xmin>2</xmin><ymin>61</ymin><xmax>381</xmax><ymax>389</ymax><score>0.906186</score></person></Objects>
c++文件
#include <string>
#include <string.h>
#include <stdio.h>
#include "stdlib.h"
#include <libxml/xpath.h>
#include <libxml/parser.h>
#include <libxml/xmlmemory.h>
#include <libxml/xmlstring.h>
#include <jqw.h>int main()
{objects obj;
double fps;xmlDocPtr pDoc = xmlReadFile("parameter.xml", "UTF-8", XML_PARSE_RECOVER); //获取XML文档的指针if(NULL == pDoc){fprintf(stderr, "xmlParseFile Error in %s %d\n",__FUNCTION__, __LINE__);}xmlNodePtr pRoot = xmlDocGetRootElement(pDoc);//获取根节点if(NULL == pRoot){fprintf(stderr, "xmlDocGetRootElement Error in %s %d\n", __FUNCTION__, __LINE__);xmlFreeDoc(pDoc);}printf("Node name is %s!\n", pRoot->name);int i=0;xmlNodePtr pFirst = pRoot->xmlChildrenNode;//获取子节点while(NULL != pFirst){//printf("---------------i= %d\n", i);if(!xmlStrcmp(pFirst->name, (const xmlChar *)("person"))){xmlNodePtr pSecond = pFirst->xmlChildrenNode;while(NULL != pSecond){xmlChar* value= NULL;if(!xmlStrcmp(pSecond->name, (const xmlChar *)("label"))){i=i+1;value = xmlNodeGetContent(pSecond);//printf("\n%s-->%s\n", pSecond->name, value);char * stream = (char *) value;obj.p[i].lable=atoi(stream);printf("obj.person[%d].lable=%d\n",i,obj.p[i].lable);stream=NULL;xmlFree(value);value = NULL;}if(!xmlStrcmp(pSecond->name, (const xmlChar *)("xmin"))){value = xmlNodeGetContent(pSecond);//printf("\n%s-->%s\n", pSecond->name, value);char * stream = (char *) value;obj.p[i].xmin=atoi(stream);printf("obj.person[%d].xmin=%d\n",i,obj.p[i].xmin);stream=NULL;xmlFree(value);value = NULL;}if(!xmlStrcmp(pSecond->name, (const xmlChar *)("ymin"))){value = xmlNodeGetContent(pSecond);//printf("\n%s-->%s\n", pSecond->name, value);char * stream = (char *) value;obj.p[i].ymin=atoi(stream);printf("obj.person[%d].ymin=%d\n",i,obj.p[i].ymin);stream=NULL;xmlFree(value);value = NULL;}if(!xmlStrcmp(pSecond->name, (const xmlChar *)("xmax"))){value = xmlNodeGetContent(pSecond);//printf("\n%s-->%s\n", pSecond->name, value);char * stream = (char *) value;obj.p[i].xmax=atoi(stream);printf("obj.person[%d].xmax=%d\n",i,obj.p[i].xmax);stream=NULL;xmlFree(value);value = NULL;}if(!xmlStrcmp(pSecond->name, (const xmlChar *)("ymax"))){value = xmlNodeGetContent(pSecond);//printf("\n%s-->%s\n", pSecond->name, value);char * stream = (char *) value;obj.p[i].ymax=atoi(stream);printf("obj.person[%d].ymax=%d\n",i,obj.p[i].ymax);stream=NULL;xmlFree(value);value = NULL;}if(!xmlStrcmp(pSecond->name, (const xmlChar *)("score"))){value = xmlNodeGetContent(pSecond);char * stream = (char *) value;//printf("\n%s-->%s\n", pSecond->name, value);obj.p[i].score=atof(stream);printf("obj.person[%d].score=%f\n",i,obj.p[i].score);stream=NULL;xmlFree(value);value = NULL;}pSecond = pSecond->next;}}pFirst = pFirst->next;}obj.personnum=i;printf("obj.personnum=%d\n",obj.personnum);xmlFreeDoc(pDoc);return 0;
}
jqw.h
#ifndef __JQW_H__
#define __JQW_H__struct person{int lable;int xmin;int ymin;int xmax;int ymax;float score;
};struct objects
{person p[3];int personnum;
};
#endif
编译脚本
#!/bin/bash
#
#gcc -I/usr/include/libxml2 parse_xml.cpp -o CreateXmlFile -L /usr/lib/i386-linux-gnu -lxml2
echo "finish compile"echo "start run pragram!!!"exit 0
c++ 解析xml文件相关推荐
- python中利用lxml模块解析xml文件报错XMLSyntaxError: Opening and ending tag mismatch
今天在代码中第一次使用lxml解析xml文件时出错了, XMLSyntaxError: Opening and ending tag mismatch: keyEffectiveDate line 2 ...
- java xml中的冒号_Java jdom解析xml文件带冒号的属性
Java jdom解析xml文件带冒号的属性 如果xml文件解析带了冒号的属性,一般都是要特别处理,这里是命名空间,N年前遇到过一次忘记记录,后来也忘了,这次再记录下. 解决了,记录下,分享给大家,百 ...
- XML专题:使用NSXMLParser解析xml文件
使用NSXMLParser解析xml文件 1. 设置委托对象,开始解析 NSXMLParser *parser = [[NSXMLParser alloc] initWithData:dat ...
- SAX解析XML文件
就目前来说,有三种方式可以解析XML文件:DOM.SAX.StAX.DOM将整个XML文件加载到内存中,并构建出节点树:应用程序可以通过遍历节点树的方式来解析XML文件中的各个节点.属性等信息:这种方 ...
- Java--Dom解析XML文件
之前写过几篇关于Java中解析XML文件的方法,不过,感觉不够简单,今天重写了一遍代码,用到的是方法是Dom,其中加入了日志记录功能--Log4j. 好了,不多说了,先把XMl ...
- 10. 解析XML文件(SAX/DOM/ElementTre)
XML的全称是eXtensible Markup Language, 意为可扩展的标记语言, 是一种用于标记电子文件使其具有结构性的标记语言.以XML结构存储数据的文件就是XML文件,它被设计用来传输 ...
- Dom方法,解析XML文件
Dom方法,解析XML文件的基本操作 1 package com.demo.xml.jaxp; 2 3 import java.io.IOException; 4 5 import javax.xml ...
- [转载]VC轻松解析XML文件 - CMarkup类的使用方法
VC轻松解析XML文件 - CMarkup类的使用方法 VC解析XML文件的工具有很多,CMarkup, tinyXML,还有IBM的,MS的等等. 据说tinyXML很好,可能字符集问题,我编译不了 ...
- python读取xml标注坐标_遍历文件 创建XML对象 方法 python解析XML文件 提取坐标计存入文件...
XML文件??? xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. 里面的标签都是可以随心所欲的按照他的命名规则来定义的,文件名为roi.xm ...
- python读取xml_python解析xml文件
加载和读取xml文件 import xml.dom.minidom doc = xml.dom.minidom.parse(xmlfile) 获取xml文档对象(对子节点和节点node都适用) roo ...
最新文章
- PLSQL developer 连接不上64位Oracle 解决办法
- Linux虚拟地址空间布局
- 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验二十:SDRAM模块③ — 页读写 α...
- [codevs 2926] 黑白瓷砖(2002年安徽省队选拔赛)
- HDU4825 Xor Sum 01字典树(Tire Tree)
- php7的稳定性,探索PHP7(一)--性能
- 开发辅助 | 阿里图标库iconfont入门使用
- android摄像头矩形框提取_视频图像摄像头跟踪的上位机系统设计
- 电池的寿命(信息学奥赛一本通-T1229)
- python怎么导出数据_如何用python将数据导出
- 【图像融合】基于小波变换的图像融合
- 使用 github + jekyll 搭建个人博客
- TCP客户端与服务端
- Linux在线词典项目,实现注册,登陆,查询单词以及查询历史记录,退出查询等功能,(涉及网络编程,进程线程,文件io,sqlite)
- php文章排序,php实现的常见排序算法汇总
- 直连网线和交叉网线的线序
- Win10系统切换输入法快捷键设置方法
- nvcc编译器之编译内幕(chapter 23)
- [转载](asp.net大型项目实践)
- 在vue中使用echarts,echarts-map:echarts画地图
热门文章
- Linux命令终端提示符显示-bash-4.2#解决方法【转载】
- g100显卡 linux驱动,nvidia geforce g100驱动
- chrome vue插件_VS Code 前端常用插件推荐
- python爬虫好学不_python爬虫好学吗
- 【LeetCode笔记 - 每日一题】334. 递增的三元子序列(Java、偏思路)
- 【LeetCode笔记】121. 买卖股票的最佳时机 / 剑指 Offer 63. 股票的最大利润(Java、动态规划)
- java移动接口发短信_Java面试零碎知识点
- excel教程自学网_Excel自学教程:万能查找函数Lookup的神应用和技巧
- linux设置历史命令保留数目限制,linux下修改history命令保存条数
- 有没有什么方法快速能找到导致软件崩溃的进程_崩溃!电脑突然黑屏无法启动...