- 浏览: 224425 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (163)
- c++ (30)
- JavaScript (30)
- java (61)
- jQuery (3)
- ACE (2)
- oracle (9)
- jni (0)
- android (2)
- shell (1)
- myeclipse (1)
- Hibernate (1)
- linux (2)
- sqlserver (2)
- windows (2)
- sql (2)
- php (2)
- css (1)
- 学习 (1)
- ExtJs (1)
- RSS (1)
- 报文 (1)
- 跟我学Spring3 (6)
- dos (1)
- server (1)
- nosql (4)
- mongodb (6)
- photoshop (1)
- WebService (2)
- 股票 (1)
- OpenGL (3)
- Spring3MVC (6)
- 生活 (1)
- struts2 (1)
- 云盘 (1)
- blog (1)
- nosql nodejs mongoose (1)
最新评论
-
sblig:
配置分片: mongo -port 27017config ...
搭建Mongodb集群:分片Sharding+副本集Replica Set -
sblig:
配置路由:mongs: 40000 40100 40200sc ...
搭建Mongodb集群:分片Sharding+副本集Replica Set -
fuanyu:
哥们,干得漂亮。。
struts2 高危漏洞修复 -
sblig:
配置列子如下
<?xml version="1 ...
跟我学Spring3 学习笔记一 -
sblig:
307622798 写道博主你好,最近在看你的js系列文章,发 ...
JavaScript 学习笔记 二 对象的访问
xml数据结构: 生成xmldoc、获得根节点,获得子节点
xmlChar:对char的基本代替,是一个UTF-8编码字符串中的一个字节
xmlDoc 和 xmlDocPtr: 树的结构
xmlNode 和 xmlNodePtr:单个节点的结构//4. 解析xml字符串
xmlDocPtr doc = xmlParseMemory(pXml, length);
//根据xmldoc获得xml的根节点
xmlNodePtr cur = xmlDocGetRootElement(doc);
//获得子节点:->children获得不是第一个子节点,必须用next才能获得第一个子节点
cur = cur->children;
cur = cur->next;
// 获得节点信息中的内容: 注意释放资源
xmlChar* key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1);
xmlFree(key);
//获得节点信息属性的值:属性name,注意释放资源
xmlChar* fversion = xmlGetProp(cur, "version");
xmlFree(fversion);
//根节点相关函数
xmlNodePtr xmlDocGetRootElement (xmlDocPtr doc) //获取文档根节点
xmlNodePtr xmlDocSetRootElement (xmlDocPtr doc, xmlNodePtr root) //设置文档根节点
//创建子节点相关函数
xmlNodePtr xmlNewNode (xmlNsPtr ns, const xmlChar * name) //创建新节点
xmlNodePtr xmlNewChild (xmlNodePtr parent, xmlNsPtr ns, const xmlChar * name, const xmlChar * content) //创建新的子节点
xmlNodePtr xmlCopyNode (const xmlNodePtr node, int extended) //复制当前节点
//添加子节点相关函数
xmlNodePtr xmlAddChild (xmlNodePtr parent, xmlNodePtr cur) //给指定节点添加子节点
xmlNodePtr xmlAddNextSibling (xmlNodePtr cur, xmlNodePtr elem) //添加后一个兄弟节点
xmlNodePtr xmlAddPrevSibling (xmlNodePtr cur, xmlNodePtr elem) //添加前一个兄弟节点
xmlNodePtr xmlAddSibling (xmlNodePtr cur, xmlNodePtr elem) //添加兄弟节点
//属性相关函数
xmlAttrPtr xmlNewProp (xmlNodePtr node, const xmlChar * name, const xmlChar * value) //创建新节点属性
xmlChar * xmlGetProp (xmlNodePtr node, const xmlChar * name) //读取节点属性
xmlAttrPtr xmlSetProp (xmlNodePtr node, const xmlChar * name, const xmlChar * value) //设置节点属性
=xmlNodeListGetstring(doc, cur->xmlChildrenNode, 1);
=xmlNodeContent(cur);
对一个xmldoc解析解析
void CCommunicationThread::parseXml_doc(xmlDocPtr doc, xmlNodePtr cur, const char* path) { //1.进入xml的目录时:判断该目录是否存在?否则创建 cur = cur->children; if (cur == NULL) return; cur = cur->next; if (cur == NULL) return; check_and_create_path(path); SVN_MAP file_map; char* pMapBuffer = this->get_fileInfor_list(path, file_map); //2.将服务器的新版、新增文件信息,压入准备下载的队列,启动线程开始下载. xmlChar* fileName; xmlChar* fileVersion; SVN_MAP map_new; while ( cur != NULL) { if (strcmp((char*)cur->name, "folder") == 0) { string curPath = path; fileName = xmlGetProp(cur, (const xmlChar *)"name"); curPath = curPath + "\\" + (char*)fileName; parseXml_doc(doc, cur, curPath.c_str()); } else if (strcmp((char*)cur->name, "file") == 0) { // 判断一个文件是否存在?文件是否修改?文件版本号是否与当前的版本号相同? fileName = xmlGetProp(cur, (const xmlChar *)"name"); fileVersion = xmlGetProp(cur, (const xmlChar *)"version"); FILE_SVN_INFOR* svn_infor = new FILE_SVN_INFOR; strcpy(svn_infor->filename, (const char*)fileName); svn_infor->version = 0; SVN_MAP::iterator it = file_map.find((char*)fileName); if (it != file_map.end()) { // 找到该信息,查看版本号 if (atoi((const char*)fileVersion) > it->second->version)//新版本 { File_Infor* infor = new File_Infor(); strcpy(infor->command, CMD_DOWNLOAD); strcpy(infor->param.download.fileName, (const char*)fileName); this->push_list(infor); } svn_infor->md5 = it->second->md5; } else { // 新增 File_Infor* infor = new File_Infor(); strcpy(infor->command, CMD_DOWNLOAD); strcpy(infor->param.download.fileName, (const char*)fileName); this->push_list(infor); memset(&svn_infor->md5, 0, sizeof(MD5)); } // 组织新的.svn文件 map_new[svn_infor->filename] = svn_infor; xmlFree(fileName); xmlFree(fileVersion); } cur = cur->next; } //3.在退出xml目录时:根据文件新的版本存储.svn文件 free(pMapBuffer); set_fileInfor_list(path, map_new); for ( SVN_MAP::iterator it = map_new.begin(); it != map_new.end(); it++ ) { delete it->second; } map_new.clear(); return; }
发表评论
-
OpenGL 图形编程 学习笔记 三
2013-01-04 13:54 1849[2012-12-31 16:53] openGL笔记 ... -
OpenGL 图形编程 学习笔记 二
2013-01-04 13:48 1234[2012-12-31 16:38] OpenGL ... -
OpenGL 图形编程 学习笔记 一
2013-01-04 13:45 1135[2012-12-31 16:15] OpenGL学习笔 ... -
Boost 学习笔记 第一天
2012-12-07 10:50 10201. timer.hpp timer接口简单,轻 ... -
“工业级” 断言
2012-09-06 12:30 994class Assert { public: A ... -
算法学习 之遍历
2012-05-22 14:22 1100/********************广度优先遍历算 ... -
算法学习 之链表
2012-05-22 13:52 1006/**********开放定址哈希表的存储结构***** ... -
算法学习 之查询
2012-05-22 11:45 900/******************顺序查找***** ... -
算法学习 之排序
2012-05-07 11:42 930/***********直接插入排序********** ... -
日常开发有用标签 五
2012-04-11 10:42 905linux cmd Mr__zh ... -
日常开发有用标签 四
2012-04-11 10:38 778java I/O 深入分析 Java ... -
日常开发有用标签 三
2012-04-11 10:37 914java thread java并发编程- ... -
日常开发有用标签 二
2012-04-11 10:35 693java 100个Java经典例子(41- ... -
日常开发有用标签 一
2012-04-11 10:31 931工具 Linux 常用C函数(中文版) ... -
C++ Primer 笔记七
2012-03-27 16:15 895每个类都定义了一个接口和一个实现。接口由使用该类的代码需要执行 ... -
C++ Primer 笔记六
2012-03-07 14:38 844typedef 通常被用于以下三种目的: 1.为了隐藏特定类型 ... -
C++ Primer 笔记五 引用(const)1
2012-02-24 17:50 1263定义 const 对象常量在定义后就不能被修改,所以定义时必须 ... -
C++ Primer 笔记四
2012-02-22 15:38 10361.内置类型变量是否自动初始化取决于变量定义的位置。在函数体外 ... -
C++ Primer 笔记三
2012-02-22 12:53 869初始化变量定义指定了变量的类型和标识符,也可以为对象提供初始值 ... -
C++ Primer 笔记二
2012-02-16 16:09 932/* * main.cpp * Created on ...
相关推荐
libxml2是一款开源的XML解析库,由Daniel Veillard开发,它提供了丰富的XML处理功能,包括解析、编码、XPath查询、XSLT转换等。在本篇文章中,我们将重点探讨libxml2-2.9.0版本在Windows 64位平台上的使用、编译和...
本篇将详细探讨libxml2-2.6.32这一版本的XML解析库,以及它与PHP中的GD库集成的重要性和过程,特别是如何通过安装依赖如zlib、freetype、libpng和jpeg来提升GD库的功能,以满足Cacti WeatherMap插件的需求。...
libxml2是一个用来解析XML文档的函数库。它用 C 语言写成,并且能被多种语言所调用,如 C、C++、XSH、C#、Python、Kylix、Delphi、Ruby、PHP 等。 注:先解压得到libxml2-2.9.1.tar.gz文件,然后再拷贝到linux系统...
libxml2是广泛使用的开源XML解析器,由 GNOME 项目开发,其功能强大且性能优异,支持多种XML相关的标准,如XPath、XPointer、XSLT和XML Schema。 这个2.6.11版本的rpm包特别适用于运行Red Hat Enterprise Linux、...
《深入解析libxml2:XML解析与工具库的明珠》 libxml2是GNOME项目中的XML C解析器和工具库,它为开发者提供了一套强大的API,用于处理XML、HTML、XInclude、XPath、XPointer、XSLT、SGML、DTD、Namespaces等多种XML...
1. **解析器**:库中包含高效的XML解析器,能够处理各种XML文档,包括非规范化格式(如HTML)。解析器能够识别XML语法,构建文档对象模型(DOM),或者以SAX(Simple API for XML)事件驱动方式处理文档。 2. **DOM...
libxml2是一个强大的XML解析库,由Gnome项目开发并维护,广泛应用于各种操作系统环境,包括Linux、Windows以及Mac OS X等。这个名为"libxml2-2.9.7.tar.gz"的压缩包文件,包含了libxml2库的源代码,版本号为2.9.7。...
libxml2是XML解析的基石,由Gnome项目开发,提供了全面的XML处理功能,包括解析、验证、编码和XPath支持。版本2.8.0是对这个库的一次重要更新,它引入了多项优化和修复,以增强性能和稳定性。理解libxml2的核心功能...
在libxml2库中,XML解析主要通过以下几种方式实现: 1. **SAX (Simple API for XML) 解析**:SAX是一种事件驱动的解析方式,它不将整个XML文档加载到内存中,而是逐个处理元素和属性,适用于处理大型XML文件。在...
Libxml2作为C语言的XML处理库,为开发者提供了强大的工具,无论是XML解析、XPath查询还是内存管理,都有高效且稳定的实现。通过学习和使用libxml2-2.9.14源码,开发者不仅可以掌握XML处理的基础知识,还能深入了解...
**libxml2库详解与2.9.8版本...通过本文提供的编译步骤,开发者可以在本地环境中顺利构建并使用libxml2,为XML解析和处理提供便利。在实际项目中,正确理解和使用libxml2的各种API,将有助于提升程序的效率和健壮性。
1. XML解析:libxml2的核心是XML解析器,它能够将XML文档转换为内部的树形结构,便于程序进行后续处理。这一过程包括了解析文档的语法,验证元素、属性和命名空间的合法性,并构建DOM(Document Object Model)树。 ...
libxml2是开源软件领域中广泛使用的XML解析库,它的版本号为2.7.2-1,这一版本为用户提供了一个强大的XML处理工具。XML,即可扩展标记语言(eXtensible Markup Language),是一种用于存储和传输数据的格式,特别是...
1. **XML解析**:libxml2提供了两种解析方式,SAX式(事件驱动)和DOM式(树型结构)。SAX解析适用于大型文档,内存效率高;DOM解析则方便对整个文档进行操作,但需消耗更多内存。 2. **HTML解析**:除了XML,...
《libxml2-devel-2.6.26-2.1.2.8.i386.rpm:XML解析与开发的基石》 libxml2是一款广泛使用的开源XML库,其开发版本libxml2-devel是针对程序员设计的,包含了编译和开发libxml2所需的所有头文件和库文件。标题中的...
libxml2是一个开源的XML解析库,由Gnome项目维护,其版本号为2.6.23,广泛应用于各种操作系统中,包括Linux、Unix以及Windows等。这个压缩包文件“libxml2-2.6.23.tar.gz”包含了该库的源代码,允许开发者在本地环境...
**libxml2-2.9.3:XML解析库的核心详解** libxml2是一个开源的、跨平台的C语言库,用于处理XML(可扩展标记语言)和其他相关的数据格式,如HTML、XHTML和SGML。它由Gnome项目开发,并广泛应用于各种操作系统和软件...
《libxml2-2.7.5:XML解析的核心库》 XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于网络数据交换、配置文件存储等场景。为了处理XML文档,开发者通常需要使用专门的解析库,其中libxml2...
libxml2是全球最广泛使用的XML解析库之一,它为开发者提供了一系列强大的工具来处理XML文档。这个库由Gnome项目开发,其最新版本2.9.1在功能和性能上都有着显著的提升。本文将深入探讨libxml2的核心特性、使用场景...
libxml2是一个开源的XML解析库,它的版本号为2.6.19,这个软件包以`.tar.gz`格式提供,是Unix/Linux环境中常见的源码打包方式。libxml2由Gnome项目开发并维护,它在XML处理领域扮演着重要的角色,广泛应用于各种操作...