CMarkup库setdoc用法

markup库除了能以Load的方式解析XML文件外,还提供了setdoc的方法,通过加载XML字符串来解析XML,不过前提是都得是完整的XML文件。所以当手头有XML字符串时不必要写入文件来解析,或者当拆分了很大的XML后,没必要保存成一个一个文件送给markup解析。

具体用法如下:(给出了查找方法,具体查找什么信息要根据你的XML来具体写代码)

#include "Markup.h"
#include <iostream>
char   strxml[] = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
"<Response>"
"<CmdType>Catalog</CmdType>"
"<SN>12 </SN >"
"<DeviceID>34020000002000000001 </DeviceID >"
"<SumNum>19046 < / SumNum >"
"<DeviceList Num = \"1\">"
"<Item>"
"<DeviceID>34020000002000000001 </DeviceID >"
"<Name>*******</Name>"
"<Manufacturer>******</Manufacturer>"
"</Item>"
"</DeviceList>"
"</Response>";


        CMarkup xml;

xml.SetDoc(xml);

xml.ResetPos();
//定位根节点
if (!xml.FindElem(XML_DATA_INFO_ROOT))
{   
//cout << "not find root" << endl; 
return 0;
}
xml.IntoElem();//进入根节点
while (xml.FindElem(XML_DATA_INFO_DEVICELIST))

{
xml.IntoElem();
while (xml.FindElem(XML_DATA_INFO_ITEM))
{

if (xml.FindChildElem(XML_DATA_INFO_DEVICEID))
{

cout << "pdata.dwDeviceID " << xml.GetChildData() << endl;
}
xml.ResetChildPos();


if (xml.FindChildElem(XML_DATA_INFO_NAME))
{
cout << "pdata.dwDeviceID " << xml.GetChildData() << endl;
}
xml.ResetChildPos();

if (xml.FindChildElem(XML_DATA_INFO_CIVILCODE))
{

cout << "pdata.dwDeviceID " << xml.GetChildData() << endl;
}
xml.ResetChildPos();

if (xml.FindChildElem(XML_DATA_INFO_LONGITUDE))
{
pdata.Longitude = xml.GetChildData();
//cout << "pdata.dwDeviceID " << xml.GetChildData() << endl;
}
xml.ResetChildPos();


if (xml.FindChildElem(XML_DATA_INFO_LATITUDE))
{
pdata.Latitude = xml.GetChildData();
//cout << "pdata.dwDeviceID " << xml.GetChildData() << endl;
}
m_arrXmlDataInfo.Add(pdata);
}
xml.OutOfElem();
}
xml.OutOfElem();
return 0;
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值