- 浏览: 761591 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1045)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (53)
- Python (37)
- c++ primer 5th(c++11) (22)
- 数据库/MySQL (27)
- 数据存储 (4)
- lisp (7)
- git (4)
- Utility (3)
- CDN与DNS (54)
- Http (53)
- php (7)
- nginx/lua/openresty (41)
- redis (11)
- TCP/IP (16)
- 互联网 (6)
- kernel (2)
- go (34)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (65)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
- Ton (0)
最新评论
#include<libxml/parser.h> #include<libxml/tree.h> void writeXML(char* fileName) { xmlDocPtr doc; xmlNodePtr rootNode; xmlNodePtr basicNode; xmlNodePtr nodeContents; xmlNodePtr sonNode; xmlNodePtr grandsonNode; //create document doc = xmlNewDoc(BAD_CAST XML_DEFAULT_VERSION); rootNode = xmlNewNode(NULL,BAD_CAST "rootNode"); //set root node xmlDocSetRootElement(doc,rootNode); //add nodes xmlNewTextChild(rootNode, NULL, BAD_CAST "nodes", BAD_CAST "nodes1"); xmlNewTextChild(rootNode, NULL, BAD_CAST "nodes", BAD_CAST "nodes2"); xmlNewTextChild(rootNode, NULL, BAD_CAST "nodes", BAD_CAST "nodes3"); //add a basic node which has attribute and contents basicNode = xmlNewNode(NULL,BAD_CAST "basicNode"); nodeContents = xmlNewText(BAD_CAST "contents"); xmlNewProp(basicNode,BAD_CAST "size",BAD_CAST "123");//add a attribute xmlAddChild(basicNode,nodeContents);//add contents to node xmlAddChild(rootNode,basicNode);//add node to root //nesting sonNode = xmlNewNode(NULL,BAD_CAST "son"); grandsonNode = xmlNewNode(NULL,BAD_CAST "grandson"); xmlAddChild(grandsonNode,xmlNewText(BAD_CAST "nesting node")); xmlAddChild(sonNode,grandsonNode); xmlAddChild(rootNode,sonNode); //save file int save = xmlSaveFile(fileName,doc); if(save!=-1){ printf("write %d bytes\n",save); } //free memory xmlFreeDoc(doc); xmlCleanupParser(); } void readXML(char* fileName) { xmlDocPtr doc; xmlNodePtr node; xmlChar *key; doc = xmlReadFile(fileName,"UTF-8",XML_PARSE_RECOVER); if(doc == NULL){ return; } node = xmlDocGetRootElement(doc); if(node == NULL){ return; } if(!xmlStrcmp(node->name,BAD_CAST "root")){ xmlFreeDoc(doc); return; } node = node->xmlChildrenNode; xmlNodePtr attrNode = node; printf("start reading...\n"); while(node!=NULL){ if(!xmlStrcmp(node->name,(const xmlChar*)"basicNode")){ key = xmlNodeGetContent(node);//get the contents of the node printf("basicNode:%s\n",key); xmlFree(key); } if(xmlHasProp(node,BAD_CAST "size")){ attrNode = node;//save node which has attribute-"size" } node = node->next; } // get attribute xmlAttrPtr attrPtr = attrNode->properties; while(attrPtr!=NULL){ if (!xmlStrcmp(attrPtr->name, BAD_CAST "size")){ xmlChar* attr = xmlGetProp(attrNode,BAD_CAST "size"); printf("sizeAttr=%s\n",attr); xmlFree(attr); } attrPtr = attrPtr->next; } xmlFree(doc); } int main(){ char *fileName = "Demo.xml"; writeXML(fileName); readXML(fileName); } write 193 bytes start reading... basicNode:contents sizeAttr=123
发表评论
-
柔性数组
2017-09-20 09:53 505#include <iostream> #i ... -
rawsocket发送icmp包
2017-09-06 09:54 658#include <stdio.h> #in ... -
查看glibc版本
2016-12-07 14:13 547strings /lib64/libc.so.6 |grep ... -
trim
2015-05-14 14:45 364/* trim from start */ ... -
log
2015-03-30 17:42 451log.h #ifndef __LOG_H__ #def ... -
输出类名
2014-02-20 21:51 586#include <iostream> us ... -
GC的改良
2013-10-17 22:05 575分代回收:对分配不久,诞生时间较短的“年龄”对象进行重点扫描, ... -
GC与引用记数
2013-10-16 21:57 695根(Root)就是判断对象是否可被引用的起始点。至于哪里才是根 ... -
pthread
2013-07-09 10:10 585#include <pthread.h> # ... -
const
2012-10-08 23:57 1157#include<iostream> usi ... -
声明与定义
2012-10-04 11:33 694extern int i;//声明但未定义 int j;//声 ... -
windows下iconv转码
2012-08-28 17:07 2851http://ah-fu.iteye.com/blog/281 ... -
在windows下使用pthread
2012-08-28 10:12 926http://hi.baidu.com/yylwuwei/bl ... -
消除编译器未使用的警告
2012-03-29 15:07 1114#define XXX_UNUSED(x) (void)x; ... -
消息队列
2012-03-27 16:56 1412msgget函数用于创建一个新的消息队列或访问一个已存在的消息 ... -
静态链接库
2012-03-16 16:54 711静态库是obj文件的一个集合,通常以.a为后缀,理论上执行速度 ... -
#if0
2012-03-07 13:45 1265#if 0 #endif 用于屏蔽注释中间的代码,避免注释嵌 ... -
枚举转char
2012-03-05 11:54 1021#define NAME(value) #value -
libevent相关
2012-02-03 11:04 1694void event_set(struct event *ev ... -
c++0x
2012-02-01 09:55 778http://blog.csdn.net/pongba/art ...
相关推荐
### C++中使用libxml2读取XML文件详解 #### 一、引言 随着XML(可扩展标记语言)在数据交换与存储领域的广泛应用,掌握如何有效地读取和解析XML文件成为了开发人员的一项必备技能。在C++环境中,libxml2库因其功能...
6. **XML编码转换**:libxml2能够处理多种字符编码,如UTF-8、ISO-8859-1等,确保XML文档的正确读写。 7. **XML输出**:libxml2不仅能够解析XML,还能生成XML,提供XML文档的构建和序列化功能。 在libxml2-2.9.1...
例如,他们可以使用libxml2解析XML文档,执行XPath查询,进行XML文档的读写操作,甚至转换XML到HTML。由于这个版本经过测试可以正常工作,因此对于64位环境的开发来说是一个可靠的依赖。 总之,libxml2-2.9.1 x64...
4. `samples`目录:可能包含使用libxml2的示例程序,例如XML读写、XPath查询等,这些示例有助于开发者快速上手。 三、libxml2的应用场景 1. 数据交换:XML常用于不同系统之间的数据交换,libxml2库可以帮助开发者...
**libxml2库详解** libxml2是一款强大的XML解析库,由Gnome项目开发并维护。它是开源软件,被广泛应用于各种操作系统,包括Windows、Linux和macOS等。该库支持XML、HTML、XSLT、XPath、XPointer等多种XML相关的标准...
libxml2的API设计简洁且易于使用,提供了丰富的函数和数据结构,便于开发者进行XML的读写、验证、编码转换和错误处理。同时,它支持C++绑定,方便C++开发者利用面向对象的特性进行编程。 四、应用场景 libxml2广泛...
Linux中的libxml2和libaio是两个非常重要的库,它们在系统级编程和高性能I/O操作中扮演着关键角色。 libxml2是用于处理XML(eXtensible Markup Language)文档的开源库,由Gnome项目开发。XML是一种结构化数据格式...
本示例主要关注如何利用开源库libxml2和minizip来读取Microsoft Excel 2007(xlsx)文件。xlsx文件实际上是以Open XML标准为基础的ZIP压缩包,包含了多个XML文件,用于存储工作表数据、样式、公式等信息。下面我们将...
libxml2基本上算是xml的C/C++标准读写库。在linux、macOS里是默认支持的。可惜在Windows上有自己专有的msxml, 所以并不支持libxml2,恶心的是msxml还不是标配,还要必须另外下载安装。因此作为Windows上优先选择的...
在Windows环境下,利用libxml2库可以方便地实现XML文件的读写操作。libxml2是开源的XML解析库,提供了一套完整的API,支持XML文档的解析、创建、修改和打印等功能。 本主题将详细介绍如何在Win32平台下,利用libxml...
《lua-xml:基于libxml2的Lua XML实现详解》 在编程领域,XML(Extensible Markup Language)作为一种数据交换格式,广泛应用于不同系统间的数据传输和存储。它具有自解释性、结构化的特点,使得数据处理变得方便。...
标题中的“gd2.32&libxml2&zendoptiom&zlib1.2.3&jpegsrc&libpng&curl.rar”提及了一系列在IT领域中常用的库和工具,这些组件在Web开发、图像处理、网络通信等方面扮演着重要角色。让我们逐一深入探讨这些知识点: ...
能读写excel文件, 支持excel ...libopc_test\config\win32-msvc\libxml2-2.7.7 libxml2-2.7.7.win32\include libopc_test\plib\config\msvc\plib\include libopc_vc6\include LIBXML2-2.7.7\INCLUDE lib: LIBOPC_VC6
3. **XML编写**: 除了解析,libxml2还支持将内存中的数据结构转换回XML文档,实现了读写XML的功能。 4. **HTTP和FTP支持**: libxml2内置了简单的HTTP和FTP客户端,可以用于从网络获取XML文档。在“只读镜像”的场景...
通过上述教程,你可以了解如何在Windows环境下使用Visual Studio构建C++项目,集成libxml2并实现XML文件的读写操作。通过深入学习和实践,你可以进一步掌握XML文档的高级操作,提升你的软件开发能力。
在C++中处理XML,通常我们会选择使用库,例如TinyXML、pugixml、libxml2等。MFC虽然不是一个专门处理XML的库,但它提供了一些基础的支持,如CXMLElement类和CXMLNode类,这些类可以帮助我们解析和生成XML文档。 ...
Qt本身并不直接支持.docx文件的读写,但我们可以利用QIODevice和QFile类来处理ZIP文件,并通过第三方库如`libxml2`和`libzip`来解析和操作XML文档。此外,还有一些开源项目,如`docx4j`或`python-docx`,提供了更高...
1. **解析XML文档**:C语言中常用的库有libxml2,它提供了丰富的API来解析XML文档。首先,你需要使用`xmlReadFile()`函数加载XML文件,然后通过`xmlDoc`结构体处理整个文档。 2. **创建XML解析器上下文**:`...
2. **链表结构**:与许多 XML 解析器不同,LIBXML2F90 使用链表来表示解析后的数据。链表是一种灵活的数据结构,可以有效地处理动态变化的数据,允许在内存中轻松地添加、删除和修改节点。 3. **读写支持**:除了...
Libxml2 是一个xml c语言版的解析器,本来是为Gnome项目开发的工具,是一个...还支持c++、PHP、Pascal、Ruby、Tcl等语言的绑定,能在Windows、Linux、Solaris、MacOsX等平台上运行,本资源是基于libxml2动态库读写XML