多语言展示
当前在线:1481今日阅读:27今日分享:41

嵌入式linux开发:[1]XML解析

我打算把我这些年记录的比较给写下来,慢慢来写,都是写经验。
方法/步骤
1

1.1.1 协议概述采用网络上开源的Cmarkup类来解析XML协议,因为Cmarkup使用起来方便、简单。Cmarkup具备了所有对XML的操作,只要调用所提供的方法就可以了。最新版下载网站:http://www.firstobject.com/dn_markup.htm

3

1.1.1 XML语法推荐学习网站http://www.w3school.com.cn/xml/xml_syntax.asp一个合格xml的语法要求1)文档的开始必须是XML声明。2)含有数据的元素必须有起始标记和结束标记。     即:xxx3)不含数据并且仅使用一个标记的元素必须以/>结束。     即:     也可以使用,但是不推荐.     不可以使用4)文档只能包含一个能够包含全部其他元素的元素。     即:合格的XML文档必须有且只有一个根元素5)元素只能嵌套不能重叠。     eg:不合法的嵌套例子:Thistext is bold and italic6)属性值必须加引号。     eg: value要用双引号括起来7)字符<和&只能用于起始标记和实体引用。8)xml对大小写敏感

4

1.1.1 函数参考下面是CMarkup的类成员函数列表。这些函数的设计都是基于源EDOM的。1)初始化 Load  从一个(xml)文件构建CMarkup对象并对其进行解析。 SetDoc 从一个字符串构建CMarkup对象并对其进行解析。 xml.SetDoc('xml version=\'1.0\'encoding=\'UTF-8\'?>\r\n');2)输出 Save  把xml文档数据写到文件中。 GetDoc  将整个xml文档数据作为一个字符串返回。3)改变当前位置 FindElem 定位到下一个元素,可以选择匹配标签名或者路径。 FindChildElem 定位到下一个子元素,可以选择匹配标签名或者路径。 FindNode 定位到下一个节点,可选择匹配节点类型。 IntoElem  进入当前位置的下一级位置,而当前位置则变为父位置。 OutOfElem 使当前位置的父位置变为当前位置。 ResetPos  复位当前位置为文档的起始位置,到XML第一行的位置,需要使用FindChildElem函数后才可以使用其他函数,暂时测试如此。 ResetMainPos 复位当前位置为第一个兄弟位置之前。 ResetChilePos 复位当前的子位置为第一个子位置之前。 4)添加元素 AddElem 在当前位置元素或者最后一个兄弟之后新增一个元素。 InsertElem 在当前位置元素或者第一个兄弟之前插入一个元素。 AddChildElem 在当前子位置元素或者最后一个子位置之后增加一个元素。 InsertChildElem  在当前子位置元素或者第一个子位置之前插入一个元素。 InsertNode 在当前节点的前面或者父元素内容的开头新增一个节点。 译注:注意区分元素和节点,元素只是一种特殊的节点而已。 5)删除元素 RemoveElem 删除当前位置元素,包括子元素。 RemoveChildElem  删除当前位置的子元素,包括子元素的子元素。 RemoveNode 删除当前节点。6)获取数据 GetData   返回当前位置元素或者节点的字符串值。 GetChildData 返回当前子位置元素的字符串值。 GetElemContent   返回当前位置包括子位置的markup字符串内容 GetSubDoc  返回当前位置包括子位置的子文档markup字符串内容7)设置值,修改数据 SetData    设置当前位置元素或者节点的值 SetChildData 设置当前子位置元素的值 SetElemContent 将当前位置元素用markup(标记)内容来替换 SetAttrib 设置当前位置元素的指定属性的值 SetChildAttrib 设置当前子位置元素的指定属性的值 GetTagName 获得当前位置的标签的名8)部分函数不解例1、FindChildElem(“ITEM”)132487A-J crank casing 1  xml.FindChildElem('ITEM')xml.FindChildElem('SN');CString csSN = xml.GetChildData();如上并不能获得SN的值,必须增加xml.IntoElem();xml.FindChildElem('SN');所以FindChildElem并没有进入到依然处于的位置。该函数并不改变当前位置,可以使用GetTagName来获取当前的位置。该函数如果返回空就表示不存在该元素。 9)常用函数1.CString转char *windows   strslave = xml.GetChildData(); cout << 'sssss  '<

推荐信息