避免tcp接收xml数据时加上xml数据长度,根据xml数据特点来解析recv到的xml数据

 int nPos1 = 0;
int nPos2 = 0;
int nTempPos = 0;
int nXmlParseStep = 0;
std::string strRequest;
std::string strXmlNode;
char szXmlData[1024] = {0}; strcpy(szXmlData, "<?xml version=\"1.0\"?><Alarmstatus Num=1><Item><DeviceID></DeviceID><DutyStatus>OFFDUTY</DutyStatus></Item></Alarmstatus>"); int nXmlLen = strlen(szXmlData); strRequest += std::string(szXmlData, nXmlLen);
if(nXmlParseStep == 0) //找到xml header <?xml version="1.0"?>
{
nPos1 = strRequest.find("<?", 0);
if(nPos1 != std::string::npos)
{
nPos2 = strRequest.find("?>", nPos1+1);
if(nPos2 != std::string::npos)
nXmlParseStep = 1;
}
} if(nXmlParseStep == 1)
{
nPos1 = strRequest.find("<", nPos2+1);
if(nPos1 != std::string::npos)
{
nPos2 = strRequest.find(">", nPos1+1);
if(nPos2 != std::string::npos)
{
nXmlParseStep = 2;
nTempPos = strRequest.find(" ", nPos1+1); //避免有子属性,如<Alarmstatus Num=1>
if(nTempPos == std::string::npos)
strXmlNode = strRequest.substr(nPos1+1, nPos2-nPos1-1);
else
strXmlNode = strRequest.substr(nPos1+1, nTempPos-nPos1-1);
}
}
} if(nXmlParseStep == 2)
{
nPos1 = strRequest.find("</"+strXmlNode+">", nPos2+1);
if(nPos1 != std::string::npos)
{
nXmlParseStep = 0;
nPos1 = nPos2 = 0;
strRequest.erase(0, std::string::npos);
}
}

tcp接收xml数据解析的更多相关文章

  1. iOS - XML 数据解析

    前言 @interface NSXMLParser : NSObject public class NSXMLParser : NSObject 1.XML 数据 XML(Extensible Mar ...

  2. xml数据解析调研

    XML数据解析http://www.tuicool.com/articles/Nraau2(必用) http://www.cnblogs.com/pengyingh/articles/2342699. ...

  3. iOS开发——网络Swift篇&JSON与XML数据解析

    JSON与XML数据解析 JSON数据解析(内置NSJSONSerialization与第三方JSONKit)   一,使用自带的NSJSONSerialization 苹果从IOS5.0后推出了SD ...

  4. xml数据解析

    xml数据解析 在iPhone开发中,XML的解析有很多选择,iOS SDK提供了NSXMLParser和libxml2两个类库,另外还有很多第三方类库可选,例如TBXML.TouchXML.Kiss ...

  5. iOS开发网络篇之Web Service和XML数据解析

    郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主.捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 游戏官方下 ...

  6. 关于C#对Xml数据解析

    首先进行简单说明Xml 与Html  和 XAML数据标签的差别. 1.Xml属于数据文本, 被设计为传输和存储数据,其焦点是数据的内容.它与json格式数据相似,可作为服务数据传输类型. 其中XML ...

  7. 二、Android XML数据解析

    XML,可扩展标记语言.可以用来存储数据,可以看做是一个小型的数据库,SharedPreference就是使用XML文件存储数据的,SQLite底层也是一个XML文件,而在网络应用方面,通常作为信息的 ...

  8. 玩转iOS开发 - JSON 和 Xml 数据解析

    前言 Json 和xml是网络开发中经常使用的数据格式,JSON轻量级.xml相对较复杂.所以如今用JSON的比例很大.基本上从server获取的返回数据都是JSON格式的,作为iOS开发人员,解析J ...

  9. (四)XML基础(客户端和服务端发送与接收xml数据)

    案例: index.jsp <%@ page language="java" import="java.util.*" pageEncoding=&quo ...

随机推荐

  1. python none,null,,,,,类型

    内建类型None表示一个空对象,没有方法和属性. None是一个特殊的常量. None和False不同. None不是0. None不是空字符串. None和任何其他的数据类型比较永远返回False. ...

  2. CodeForces - 27E--Number With The Given Amount Of Divisors(反素数)

    CodeForces - 27E Number With The Given Amount Of Divisors Submit Status Description Given the number ...

  3. 竖向折叠二级导航JS代码(可防刷新ul/li结构)

    <html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">    ...

  4. Codeforces Round #315 (Div. 2B) 569B Inventory 贪心

    题目:Click here 题意:给你n,然后n个数,n个数中可能重复,可能不是1到n中的数.然后你用最少的改变数,让这个序列包含1到n所有数,并输出最后的序列. 分析:贪心. #include &l ...

  5. 使用copy函数完成数据库迁移

    最近在该一个迁移工具的迁移方式,从ora8迁移到postgresql使用原来的插入迁移速度太慢了,老板说让使用缓存迁移,即使用postgresql的copy函数,因此去pg官网查阅了相关资料,我们需要 ...

  6. 数据库迁移(SQL SERVER导入数据到MySql)

    地址:http://blog.csdn.net/jiaohougenyang/article/details/44937801 背景:项目最开始时使用的是SQL Server数据库,业务需求现要将数据 ...

  7. jQuery prop 全选和全不全

    $('#ckAll').click(function() { var value = $(this).is(':checked') ? true : false; $("input[name ...

  8. ELK 之三:Kibana 使用与Tomcat、Nginx 日志格式处理

    一:kibana安装: kibana主要是搜索elasticsearch的数据,并进行数据可视化的展现,新版使用nodejs. 1.下载地址: https://www.elastic.co/downl ...

  9. JVM -- 类加载

    学习自周志明老师的<深入理解Java虚拟机>第二版 类的加载时机 如上图所示: 类从被加载到虚拟机内存中开始,直到卸载出内存为止,它的整个生命周期包括了: 加载.验证.准备.解析.初始化. ...

  10. django学习之Model(三)QuerySet

    接下来主要学习Models中的Making queries 写好models.py后,django会自动提供一个数据库的抽象API,来实现CRUD(create, retrieve, update, ...