Chinaunix首页 | 论坛 | 博客
  • 博客访问: 713292
  • 博文数量: 94
  • 博客积分: 2812
  • 博客等级: 少校
  • 技术积分: 1555
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-08 21:28
文章分类

全部博文(94)

文章存档

2012年(23)

2011年(39)

2010年(14)

2009年(18)

分类: C/C++

2010-05-06 08:24:01

由于libxml函数很多,而且网页颜色页不太好看,加上寻找函数也不容易,所以在此贴出常用函数供自己和大家参考

 

//非常重要的2个函数虽然这两个函数不在tree.h但对于使用tree.h中的函数很重要,所以在这里列出来

 

 

 

int xmlKeepBlanksDefault (int val) //设置是否忽略空白节点,比如空格,在分析前必须调用,默认值是0,最好设置成1.否则会有惨痛的调试经历...

 

xmlDocPtr xmlParseFile (const char * filename) //分析一个xml文件,并返回一个文档对象指针

//xml操作的基础结构提及其指针类型

 

xmlDoc, xmlDocPtr 文档对象的结构体及其指针 xmlNode xmlNodePtr 节点对象的结构体及其指针 xmlAttr xmlAttrPtr 节点属性的结构体及其指针 xmlNs xmlNsPtr 节点命名空间的结构及其指针

 

 

//根节点相关函数

 

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) //设置节点属性

 

libxml库提供了一些.net风格的函数,以流的形式来读取并分析xml文件.

 

 

xmlTextReader xmlTextReaderPtr //XmlReader的结构体及其指针


xmlTextReaderPtr xmlReaderForFile (const char * filename, const char * encoding, int options) //打开一个xml文件并返回xmlreader对象,准备开始分析.


int xmlTextReaderRead (xmlTextReaderPtr reader) //读取下一个节点(注意,是下一个,不是下一个同层节点)

 

int xmlTextReaderNext (xmlTextReaderPtr reader) //读取下一个同层节点

 

int xmlTextReaderNodeType (xmlTextReaderPtr reader) //判断当前节点的类型

 

xmlChar *xmlTextReaderGetAttribute (xmlTextReaderPtr reader, const xmlChar * name) //获取当前节点的指定属性

 

xmlChar *xmlTextReaderReadString (xmlTextReaderPtr reader) //读取当前节点下的text

 

xmlNodePtr xmlTextReaderExpand (xmlTextReaderPtr reader) //将当前节点展开成一个节点对象(慎用)

 

int xmlTextReaderHasValue (xmlTextReaderPtr reader) //判断当前节点是否有text

 

int xmlTextReaderHasAttributes (xmlTextReaderPtr reader) //判断当前节点是否包含属性

 

int xmlTextReaderMoveToAttribute (xmlTextReaderPtr reader, const xmlChar * name) //移动指针到当前节点的指定属性名的属性

int xmlTextReaderMoveToAttributeNo (xmlTextReaderPtr reader, int no) //
移动指针到当前节点指定属性编号的属性

int xmlTextReaderMoveToElement (xmlTextReaderPtr reader) //
将指针移会当前节点

int xmlTextReaderMoveToFirstAttribute (xmlTextReaderPtr reader) //
将指针移动到当前节点的第一个属性

int xmlTextReaderMoveToNextAttribute (xmlTextReaderPtr reader) //
将指针移动到当前节点的下一个属性

xmlChar *xmlTextReaderName (xmlTextReaderPtr reader) //
返回当前节点的名字

 

 

libxml自定义了一个字符类型xmlChar,其本质是 unsigned char.

另外,libxml提供了一个宏来将char*转换成xmlChar*, 名字很有趣, BAD_CAST 它的本质其实是 unsigned char*.

为了方便对xmlChar类型字符串的操作,libxml提供了自己的函数,它们的定义于标准c函数库中的字符串函数很像.

 

xmlChar* xmlStrcat (xmlChar *cur, const xmlChar * add)

 

const xmlChar *xmlStrchr(const xmlChar * str, xmlChar val)

 

int xmlStrcmp (const xmlChar * str1, const xmlChar * str2)

 

int xmlStrlen (const xmlChar * str)

 

xmlChar *xmlStrncat (xmlChar * cur, const xmlChar * add, int len)

 

int xmlStrncmp (const xmlChar * str1, const xmlChar * str2, int len)

const xmlChar *xmlStrstr (const xmlChar * str, const xmlChar * val)

 

相信这些函数大家都看得眼熟,这里就不一一解释了.

 

阅读(1584) | 评论(0) | 转发(0) |
0

上一篇:new和malloc差别

下一篇:cairo总结

给主人留下些什么吧!~~