C++下利用CMarkup来解析xml文件46
来源:互联网 发布:随身带者淘宝去异世 编辑:程序博客网 时间:2024/05/20 22:38
昨天要实现一个从xml文件中读取摄像头IP和ID的功能,再晚上搜索了下,有CMarkup和TinyXml等相应的类库,就选择了CMarkup。
第一步 配置CMarkup
网址贴上:CMarkup,点击下载即可。下载完毕后,将其中的Markup.h添加到工程中的附加库中去,再将Markup.cpp添加到你的项目中,然后在main.cpp中包含头文件#include”Markup.h",这是整个配置流程。
可能出现编译不了的错误,解决的方法在Markup.cpp最前面include "stdafx.h",或者关闭预编译。
第二步 使用CMarkup
1、创建XML
CMarkup xml_Path; //声明一个xml对象
xml_Path.AddElem(_T("LEADMAP")); //添加一个标签
xml_Path.IntoElem(); //进去指针指向的当前标签
xml_Path.AddElem(_T("ROUTE")); //添加一个标签
xml_Path.SetAttrib(_T("user_name"),m_strUserName); //对指针指向标签添加属性
xml_Path.SetAttrib(_T("route_name"),m_strPatrolRouteName);
xml_Path.SetAttrib(_T("start_time"),sTime);
xml_Path.OutOfElem(); //回到上级标签
xml_Path.Save(_T("c:\\test.xml")); //保存文件
创建后-------------------------------------------------------
<LEADMAP>
<ROUTE user_name="NULL" route_name="NULL" start_time="6:6:01"/>
</LEADMAP>
2、修改XML
xml.load(_T("c:\\test.xml")) //加载xml文件,成功返回true
xml.ResetMainPos(); //将指针定义到第一个顶级标签上一个位置,注:一个标准的xml文件只有一个顶级标签
xml.FindElem(); //将指针定义到第一个顶级标签
xml.IntoElem(); //进入LEADMAP
xml.AddChildElem( _T("TIME"),szTime ); //向<LEADMAP>的子标签中(也就是ROUTE)中添加标签
xml.AddChildElem( _T("X"), PointX);
xml.AddChildElem( _T("Y"),PointY );
xml.AddChildElem( _T("SPEED"),strSpeed );
xml.OutOfElem(); //回到LEADMAP
xml.Save(_T("c:\\test.xml")); //保存
修改后-----------------------------------------------------------
<LEADMAP>
<ROUTE user_name="NULL" route_name="NULL" start_time="6:6:01">
<POINT>
<TIME>06:03:01</TIME>
<X>25942.839</X>
<Y>38936.131</Y>
<SPEED>0.00</SPEED>
</POINT>
</ROUTE>
</LEADMAP>
3、读取xml
xml.Load(_T("c:\\test.xml"));
xml.ResetMainPos(); //将指针定义到第一个顶级标签上一个位置
xml.FindChildElem(_T("ROUTE")); //将指针定义到子标签为<ROUTE>的标签上
xml.IntoElem(); //进入指针指向的标签
xml.FindChildElem(_T("POINT")); //将指针定义到子标签为<POINT>的标签上
xml.IntoElem(); //进入指针指向的标签
xml.FindChildElem(_T("X")); //将指针定义到子标签为<X>的标签上
x=xml.GetChildData(); //获取当前指向标签的值
xml.OutOfElem(); //回到父标签,也就是<POINT>
xml.IntoElem(); //进入当前标签,也就是<POINT>
xml.FindChildElem(_T("Y")); //将指针定义到子标签为<Y>的标签上
y=xml.GetChildData(); //获取当前指向标签的值
xml.OutOfElem(); //回到父标签,也就是<POINT>
获得的值------------------------------------------------------------
x=25942.839;
y=38936.131;
4、遍历标签
xml.ResetMainPos();
int count = 0;
while (xml.FindChildElem())
{
count++;
}
for (int i = 0;i<count;i++)
{
xml.FindChildElem();
}
经过这两次遍历可以是指针指向最后一个二级标签
在安装配置中可能会出现一些问题,(1)error LNK2019: 无法解析的外部符号 "public: __cdecl CMarkup::~CMarkup(void)" (??1CMarkup@@QAA@XZ),解决方法如果是用CMarkup库的话,看看lib连接的是不是对;如果直接用的源文件的话,把CPP文件加到你现在的工程里。 (2)出现一个MFC的错误,提示建议不用使用MD(d),解决方法是:在配置属性——>常规,设置MFC使用为共享DLL中使用MFC。(3)出现不存在“const char ”转换到“MCD_CSTR”的适当构造函数,解决方法:在配置属性——>常规,设置字符集为多字节字符集即可。(4)错误描述:fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h"”?
- C++下利用CMarkup来解析xml文件46
- C++利用CMarkup来解析xml文件
- 利用CMarkup类解析XML文件
- CMarkup--使用 CMarkup库解析xml文件
- CMarkup类解析xml文件
- CMarkup类解析xml文件
- CMarkup类解析xml文件
- CMarkup类解析xml文件
- CMarkup类解析xml文件
- VC解析XML文件-CMarkup
- VC解析XML文件-CMarkup
- VC轻松解析XML文件--CMarkup使用方法
- 用CMarkUp类解析XML文件
- VC轻松解析XML文件--CMarkup使用方法
- VC中使用CMarkup解析xml文件
- VC++ 用CMarkUp解析XML文件
- Cmarkup对xml文件的解析
- CMarkup类解析xml文件 例子
- softmax回归
- (2)排序概述
- _BSMachError问题出现原因探索
- Dynamic CRM Report<VB下自定义Function实现业务>
- 查看登录用户
- C++下利用CMarkup来解析xml文件46
- 快速集成iOS基于RTMP的视频推流
- java基础50题(4)
- 基于状态机的简单控制
- linux下查看所有用户及所有用户组
- HikariCP 整合spring
- android更改布局的透明度时其他布局的透明度也跟着变化
- 跟着鬼哥学爬虫-2-糗事百科
- mac环境下载、使用class-dump