`

libxml2常用函数集锦

 
阅读更多

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

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

<libxml/parser.h>

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

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

//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文件.

<libxml/xmlreader.h>

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)

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

更多函数大家可以参考

http://xmlsoft.org/html/libxml-xmlstring.html

分享到:
评论

相关推荐

    libxml2 安装Php5时会提示缺少libxml2

    安装Php5时会提示缺少libxml2 libxml是一个用来解析XML文档的函数库。它用C语言写成, 并且能为多种语言所调用,例如C语言,C++,XSH。C#, Python,Kylix/Delphi,Ruby,和PHP等。Perl中也可以使用XML::LibXML模块。...

    Ubuntu11.10 libxml2-dev

    Ubuntu11.10 libxml2-dev 安装包 libxml2_2.7.8.dfsg-4_i386.deb libxml2-dev_2.7.8.dfsg-4_i386.deb python-libxml2_2.7.8.dfsg-4_i386.deb zlib1g_1.2.3.4.dfsg-3ubuntu3_i386.deb zlib1g-dev_1.2.3.4.dfsg-3...

    libxml2开源库 libxml2开源库 libxml2开源库

    开源库libxml2库,

    libxml2.so.2

    libxml2.so.2

    libxml2.dll

    libxml2

    基于android,移植libxml2和libiconv

    最近一段时间,在android上想用c++处理xml数据,在网上找了半天资料,大多数教程都是在编译android系统的时候顺便把libxml2和libiconv源码放到系统指定路径下编译出来。可是没干过这样的事,也不想这么做。最后还是...

    libxml2-2.9.8源码及编译方法

    libxml2-2.9.8源码及编译方法,libxml2-2.9.8源码及编译方法

    libxml2-2.9.14源码

    Libxml2是一个C语言的XML程序库,可以简单方便的提供对XML文档的各种操作,并且支持XPATH查询,以及部分的支持XSLT转换等功能。libxml2支持读取utf8,gb2312的xml。

    libxml2-2.9.1.tar.gz

    libxml2是一个用来解析XML文档的函数库。它用 C 语言写成,并且能被多种语言所调用,如 C、C++、XSH、C#、Python、Kylix、Delphi、Ruby、PHP 等。 注:先解压得到libxml2-2.9.1.tar.gz文件,然后再拷贝到linux系统...

    linux libxml2-2.6.26

    the proper functionning of libxml2 main APIs while testapi does a full coverage check. Report failures to the list. To report bugs, follow the instructions at: http://xmlsoft.org/bugs.html A ...

    VS2015编译的libxml2的64位库,版本是2.7.2

    libxml2是一个用来解析XML文档的函数库。它用 C 语言写成,并且能被多种语言所调用,如 C、C++、XSH、C#、Python、Kylix、Delphi、Ruby、PHP 等。它最初是为 GNOME 开发的项目,但是现在可以用在各种各样的项目中。...

    libxml2的编程实例

    使用xml保存程序的配置 封装了libxml2的一系列函数

    libxml2 port to VS2008-2

    将libxml2 2.7.8 代码建立了VS2008编译工程,并增加了15个测试程序代码。确实需要的请下载

    libxml2接口API教程

    目录 介绍 数据类型 解析文件 获取元素内容 用XPath获取元素内容 写入元素内容 写入属性 获取属性 编码转换 A. 编译 B. 例子文档 C. Keyword例子代码 D. Xpath例子代码 E. 添加Keyword的例子代码 F....G....H....I....

    libxml2-2.9.9.tar.gz

    The XML C parser and toolkit of Gnome libxml libxml2-2.9.9.tar.gz 安装包

    libxml2.rar

    libxml2.rar

    windows下安装 libxml2 安装包 64位

    由于在windows下玩ruby,导致安装过程中遇见个问题,这个libxml2 64位 安装包,分享都大家。我找了好长时间呢。

    libxml2 使用示例

    libxml2 使用示例, readNode countNode insertNode updateNode deleteNode

    LIBXML2相关文档

    LIBXML2相关文档

    libxml2 windows下的编译方法

    Libxml2 (2.9.8)库在Windows下的编译批处理文件。将本文件下载到源码目录win32子目录中,然后点击执行即可完成编译。 在执行之前,需要根据实际情况修改批处理中的文件目录。

Global site tag (gtag.js) - Google Analytics