各种xml开发库介绍及使用
expat介绍 expat是使用C所写的XML解释器,采用流的方式来解析XML文件,并且基于事件通知型来调用分析到的数据,并不需要把所有XML文件全加载到内存里,这样可以分析非常大的XML文件。expat库是由XML的主要负责人James Clark来实现的,符合W3C的XML标准。 使用首先是用XML_ParserCreate(const XML_Char *encodingName),参数一般为NULL,函数返回一个XML_Parser类型指针, 我们就当他是一个句柄吧,类似于Windows里的内核对象,一般需要保存在一个全局的指针里。 然后调用XML_SetElementHandler(XML_Parser parser,XML_StartElementHandler start,XML_EndElementHandler end), 第一个参数是那个Parser句柄,第二个和第三个参数则是整个Parser的核心,类型为CallBack的函数,分别对应于解析<>和</>, 下面分别详细介绍这个2个回调函数。
typedef void (XMLCALL *XML_StartElementHandler) (void *userData,const XML_Char *name,const XML_Char **atts); 我用个具体的列子说明下,这样更好理解:
最后一个函数就是XML_SetCharacterDataHandler(XML_Parser parser,XML_CharacterDataHandler handler)
比如要解析的XML文件太大,但内存比较吃紧,Buffer比较小,则可以循环读取文件,然后丢给Parser, 在文件读取结束前,isFinal参数为FALSE,反之为TRUE。
TinyXML开源:http://sourceforge.net/projects/tinyxml/ 介绍TinyXML is a simple,small,minimal,C++ XML parser that can be easily integrating into other programs. It reads XML and creates C++ objects representing the XML document. The objects can be manipulated,changed,and saved again as XML。 通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树。可用于Windows、Linux平台。 在TinyXML中,根据XML的各种元素来定义了一些类: TiXmlAttribute:对应于XML中的元素的属性。 TiXmlNode:对应于DOM结构中的节点。 TiXmlComment:对应于XML中的注释 TiXmlDeclaration:对应于XML中的申明部分,<?versiong="1.0"?>。 TiXmlDocument:对应于XML的整个文档。 TiXmlElement:对应于XML的元素。 TiXmlText:对应于XML的文字部分 TiXmlUnknown:对应于XML的未知部分。 TiXmlHandler:定义了针对XML的一些操作。 安装和配置TinyXML使用了多线程环境,因此需要设置多线程的环境,win下vc中选择Debug MultiThreaed DLL。 使用可对xml文件及xml 字符流(非xml文件)进行解析: xml文件解析方法 myDocument->LoadFile("Students.xml"); 字符流解析方法 myDocument->Parse(xmlString.c_str()); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |