libxml2的xmlDocPtr和xmlChar

在linux下经常要进行socket通信,而数据流多采用目前流行的xml格式,这就会有两个用的比较多的功能:1、接收端将收到的字符串转换成xml格式的数据;2、发送端将xml格式的数据转换成字符串发送。

运用libxml2组件进行上述操作实际上是xmlDocPtr和xmlChar两种类型之间的转换

1. xmlDocPtr -> xmlChar

xmlDocPtr doc;

xmlChar *xmlbuff;

int buffersize;

xmlDocDumpFormatMemory(doc, &xmlbuff, &buffersize, 1);

2.xmlChar -> xmlDocPtr

xmlDocPtr doc;

char * cData;

doc = xmlParseMemory(docname, strlen(cData)+1);

怎样把xmlChar转换成char就无须多讲了,直接用(char*)强行转换也行。

注意:要保证xmlChar到xmlDocPtr转换的成功需要注意一个细节,那就是字符串必须是有用的数具体,类似于<?xml version="1.0" encoding="UTF-8"?>这样的头要去掉

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
xmlDocPtr是指向xmlDoc结构体的指针类型。xmlDoc结构体是libxml2库中用于表示XML文档的数据结构,它包含了多个字段来描述XML文档的各种属性和元素,比如版本、编码、根节点、DTD声明、命名空间等等。下面是xmlDoc结构体的定义: ```c struct _xmlDoc { void *_private; // 指向文档私有数据的指针 xmlElementType type; // 文档的类型 char *name; // 文档的名称 struct _xmlNode *children; // 文档的根节点 struct _xmlNode *last; // 文档的最后一个子节点 struct _xmlNode *parent; // 文档的父节点 struct _xmlNs *nsDef; // 命名空间定义 struct _xmlDtd *intSubset; // DTD声明 struct _xmlDtd *extSubset; // 外部DTD声明 struct _xmlNs *oldNs; // 引入的旧命名空间 const xmlChar *version; // 文档的版本号 const xmlChar *encoding; // 文档的编码方式 void *ids; // 指向ID哈希表的指针 void *refs; // 指向引用哈希表的指针 const xmlChar *URL; // 文档的URL地址 int charset; // 文档的字符集 int standalone; // 是否独立 struct _xmlAutomata *autoMat; // 文档的自动机 struct _xmlHashTable *dict; // 文档的字典 void *psvi; // PSVI相关 int parseFlags; // 解析标志 int properties; // 文档的属性 struct _xmlError *errors; // 文档的错误信息 void *oldNsList; // 引入的旧命名空间列表 xmlDictPtr dictNames; // 字典名称 void *subdict; // 字典子集 void *subdictFree; // 字典子集释放函数 int ids_alloc; // ID哈希表的大小 int refs_alloc; // 引用哈希表的大小 xmlNodePtr psviElement; // PSVI相关 const char *versionInternal;// 文档的内部版本号 xmlDictPtr dictKeys; // 字典键 void *oldNsItems; // 引入的旧命名空间项 int nbChars; // 文档的字符数 int compression; // 是否压缩 char *origFilename; // 原始文件名 int extSubEncoding; // 外部DTD声明的编码方式 xmlHashTablePtr propertiesHash; // 文档属性的哈希表 }; ``` 可以看到,xmlDoc结构体包含了多个指针类型的字段,这些字段指向不同的数据结构,用于描述XML文档的各种信息。xmlDocPtr类型的指针,实际上就是指向这个结构体的首地址,通过这个指针可以访问和操作xmlDoc结构体中的所有字段。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值