- 浏览: 224430 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (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 学习笔记 二 对象的访问
libxml2
xmlReadMemory
xmlParseMemory
都是处理xml文件的,就没直接处理xml字符串的函数
1. xmlParseMemory,字符串转为XML文档
2. xmlDocGetRootElement,获取XML文档根节点
3. xmlStrcmp,比较XML字符串,与strcmp差不多
4. curr = curr->xmlChildrenNode,XML节点指针指向第一个子节点
5. curr = curr->next,XML节点指针指向下一个兄弟节点
6. xmlNodeGetContent,获取XML节点的内容
7. xmlFreeDoc,释放节点,与free差不多
#include <iconv.h> #include <libxml/parser.h> #include <libxml/xmlmemory.h> #include "soapH.h" #include "ExchangeRateWebServiceSoap12.nsmap" #define FIELD_LEN 16 int conv_charset(const char *dest, const char *src, char *input, size_t ilen, char *output, size_t olen) { iconv_t conv = iconv_open(dest, src); if ( conv == (iconv_t) -1 ) return -1; memset(output, 0, olen); if ( iconv(conv, &input, &ilen, &output, &olen) ) return -1; iconv_close(conv); return 0; } int main(int argc, char **argv) { if ( argc != 2 && argc != 3 ) { printf("Usage: %s type [end_point]\n", argv[0]); printf("\ttype = A : all rate\n"); printf("\ttype = B : basic rate\n"); printf("\ttype = C : cross rate\n"); exit(-1); } struct soap soap; soap_init(&soap); // don't set is OK //soap_set_mode(&soap, SOAP_C_UTFSTRING); struct _ns1__getExchangeRate request; struct _ns1__getExchangeRateResponse response; request.theType = argv[1]; char *endpoint = NULL; if ( argc == 3 ) endpoint = argv[2]; if ( soap_call___ns3__getExchangeRate(&soap, endpoint, NULL, &request, &response) == SOAP_OK ) { int len = strlen(response.getExchangeRateResult->__any); xmlDocPtr pdoc = xmlParseMemory(response.getExchangeRateResult->__any, len); xmlNodePtr root = xmlDocGetRootElement(pdoc); xmlNodePtr curr = root; while ( xmlStrcmp(curr->name, (const xmlChar *) "getExchangeRate") ) curr = curr->xmlChildrenNode; for ( curr = curr->xmlChildrenNode; curr; curr = curr->next ) { xmlNodePtr data; for ( data = curr->xmlChildrenNode; data; data = data->next ) { char ifield[FIELD_LEN]; char ofield[FIELD_LEN]; strcpy(ifield, xmlNodeGetContent(data)); if ( conv_charset("GBK", "UTF-8", ifield, strlen(ifield), ofield, FIELD_LEN) ) printf("%s\t%s\n", data->name, ifield); else printf("%s\t%s\n", data->name, ofield); } printf("\n"); } xmlFreeDoc(pdoc); } else { soap_print_fault(&soap, stderr); } soap_destroy(&soap); soap_end(&soap); soap_done(&soap); return 0; }gcc -O2 -o exchange exchange.c soapC.c soapClient.c ../../stdsoap2.c -I../.. -I/usr/include/libxml2 -L../.. -lgsoap -lxml2
发表评论
-
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 ...
相关推荐
例如,WebKit、Firefox、PHP等都依赖libxml2进行XML处理。开发者可以利用libxml2轻松实现XML文档的读取、解析、修改、生成等操作,提升应用程序的XML处理能力。 **总结** Libxml2作为C语言的XML处理库,为开发者...
本文档旨在通过具体实例介绍libxml2的基本使用方法,帮助读者更好地理解如何利用libxml2进行XML文件的解析工作。 #### 二、libxml2简介 libxml2是一个广泛使用的C语言库,用于处理XML文档。它提供了丰富的API接口,...
例如,你可以使用libxml2进行XML文档的解析、创建和修改: ```c #include <libxml/xmlmemory.h> #include <libxml/parser.h> int main() { xmlChar *content = (xmlChar*) "<doc><element>Text</element></doc>";...
**正文** Libxml2是XML处理领域中的一个关键组件,其版本为2.9.12,这是一款功能强大的开源C语言程序库。这个库旨在为开发者提供一套全面...了解并熟练掌握Libxml2,对于进行XML相关的软件开发来说,是非常有价值的。
在这个文件中,你可能找到对libxml2 API的调用,例如`xmlDocPtr`用于创建和管理XML文档对象,`xmlNodePtr`表示XML文档中的节点,`xmlChar`是libxml2用来表示字符串的类型,以及`xmlNewNode`、`xmlNewProp`、`...
2. **xmlNodeDump()**:将节点及其子节点以字符串形式输出,方便调试和日志记录。 3. **xmlNodeSetContent()**:设置指定节点的内容。 #### 五、XPath查询 XPath是一种强大的查询语言,用于查找XML文档中的信息。...
本文将深入探讨如何使用Java进行XML的解析和生成,包括处理XML字符串和XML文件。 首先,让我们从解析XML字符串开始。在Java中,我们可以使用`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`来...
1. 解析XML文档:通过读取XML文件或XML字符串,将XML数据转换为Python对象。 2. 遍历XML树:使用ElementTree API来遍历XML文档的节点结构,获取元素属性、文本内容等信息。 3. 修改XML文档:添加、删除或修改XML元素...
1. **XML解析**:libxml2提供了解析XML文档的功能,能将XML字符串转换为内存中的解析树结构。解析过程支持命名空间、实体引用、DTD(Document Type Definition)等XML特性。 2. **XPath支持**:XPath是一种用于在...
在Windows平台上使用LIBXML2库进行XML文档的操作时,首先需要下载并安装LIBXML2库及其依赖项ICONV和ZLIB。以下是具体的步骤: 1. **下载LIBXML2** - 官方下载地址为[http://xmlsoft.org/](http://xmlsoft.org/),...
在PHP中,可以使用`libxml_use_internal_errors()`函数来控制错误处理方式,使用`simplexml_load_string()`或`DOMDocument`类来解析XML字符串或文件。同时,libxml2还提供了XML编码和解码、命名空间处理以及XML和...
// 临时字符串变量 char szDocName[] = "d.xml"; using std::string; using std::cout; using std::endl; doc = xmlReadFile(szDocName, "UTF-8", XML_PARSE_RECOVER); // 解析文件 if (NULL == doc) { /...
开发者在处理跨编码的字符串时,可以利用iconv接口进行高效且准确的转换。 最后,**zlib** 是一个通用的无损数据压缩库,广泛应用于网络传输和文件存储等领域。zlib提供了包括DEFLATE算法在内的数据压缩和解压缩...
5. 编码输出:如果需要,使用`xmlDocDumpFormatMemory()`等函数将DOM树重新编码为XML字符串。 6. 错误处理:检查`xmlError`结构体以获取解析过程中的错误信息。 在压缩包文件中,"test2"可能是一个示例文件,用于...
xmlChar是Libxml2中的字符类型,库中所有字符、字符串都是基于这个数据类型。xmlChar的定义是unsigned char,这是考虑到它能很好地适应UTF-8编码,而UTF-8编码正是libxml2的内部编码。 xmlChar相关函数 xmlChar...
1. **解析XML文档**:libxml2提供了解析XML文档的函数,如`xmlParseDoc()`和`xmlReadMemory()`,它们可以将XML字符串或文件转换为内部的树形结构,方便进一步处理。 2. **XPath查询**:XPath是一种语言,用于在XML...
由于libxml2内部使用UTF-8编码,因此所有的字符和字符串处理都基于此类型。`xmlChar*`通常用来表示字符串,需要注意内存管理,使用后需手动释放。 **2.2 xmlChar相关函数** 与`char`类型相似,`xmlChar`有相应的...
深入学习和理解这些基本概念和函数,将有助于高效地使用Libxml2进行XML处理。在实际开发中,根据项目需求,你可能还需要掌握更多高级特性和用法,例如错误处理、内存管理策略以及特定功能的API。
例如,可以使用`doc = libxml2.parseDoc(xml_string)`解析XML字符串,`xpathCtx = doc.xpathNewContext()`创建XPath上下文,再通过`nodes = xpathCtx.xpathEval(xpath_expr)`执行XPath查询,从而轻松访问XML文档中的...
前者从磁盘文件读取,后者接受XML字符串和其长度。这些函数返回一个` xmlDocPtr `,它是解析后的XML文档的句柄。 3. **解析XML结构**:`xmlDocPtr`可以用来遍历XML文档的节点结构。`xmlDocGetRootElement()`函数...