Chinaunix首页 | 论坛 | 博客
  • 博客访问: 153850
  • 博文数量: 40
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 410
  • 用 户 组: 普通用户
  • 注册时间: 2014-02-11 09:11
文章分类

全部博文(40)

文章存档

2020年(1)

2017年(36)

2014年(3)

我的朋友

分类: C/C++

2014-12-27 10:08:51

 

一、解析XML

xmlDocPtr  xmlParseFile  (const char * filename);

 能:解析一个XML文件并且生成树。

 数:filename,要解析的xml文件

返回值:如果文件合格,返回指向XML树的指针;

          否则,返回NULL;

xmlDocPtr  xmlReadFile  (const char * filename, const char * encoding,  int options)

 能:解析一个来自文件系统或者网络的xml文件。

 数:filename,一个文件名称或者URL

          encoding,文件的编码格式或者NULL

          optionsxml文件解析参数(组合)

返回值:只想XML树的指针或者NULL

xmlDocPtr  xmlRecoverFile  (const char * filename)

  能:xmlParseFile,只是当文件的格式并不正确的时候xmlRecoverFile无论如何仍会试图建立一棵树。

  数:xmlParseFile

返回值:xmlParseFile

 

二、新建和释放xmlDocPtr

xmlDocPtr  xmlNewDoc  (const xmlChar * version)

  能:创建一个新的XML文档

  数:使用xmlChar类型指定xml文档的版本,例如

         xmlDocPtr doc = xmlNewDoc(BAD_CAST "1.0");

返回值:一个新的xml文档

void  xmlFreeDoc  (xmlDocPtr cur)

  能:释放一个XML文档中的所有结构,包括tree

  数:一个XML文档

返回值:

 

三、获取和设置root借点

xmlNodePtr  xmlDocGetRootElement  (xmlDocPtr doc)

  能:获取XML文档的root节点

  数:XML文档

返回值:XML文档的root节点或者NULL

xmlNodePtr  xmlDocSetRootElement  (xmlDocPtr doc,  xmlNodePtr root)

  能:设置XML文档的root节点。

  数:docxml文档

        root,要被设置为rootxml节点

返回值:返回原来的root节点,如果原来没有root节点则返回NULL

 

四、新建、获取添加子节点

xmlNodePtr  xmlNewChild  (xmlNodePtr parent,  xmlNsPtr ns,  const xmlChar * name,  const xmlChar * content)

 能:创建一个新的子节点并添加到父节点的节点链表的末端,nscontent是可选的。

 数:parent,父节点

          ns,目前还不明确

          name,新建子节点的名称

          content,新建子节点的内容

返回值:指向新节点的指针

xmlNodePtr  xmlFirstElementChild  (xmlNodePtr parent)

 能:获取一个节点的首个子节点。

 数:父节点指针

返回值:第一个子节点的指针或者NULL

xmlNodePtr  xmlLastElementChild  (xmlNodePtr parent)

 能:获取一个节点的最后一个子节点

 数:父节点指针

返回值:最后一个子节点的指针或者NULL

xmlNodePtr  xmlAddChild  (xmlNodePtr parent,  xmlNodePtr cur)

 能:给父节点添加一个新的子节点,该子节点被添加到子节点链表的尾部。

 数:parent,父节点

          cur,子节点

返回值:返回子节点或者NULL

 

五、新建、设置、获取、删除属性

xmlAttrPtr  xmlNewProp  (xmlNodePtr node,  const xmlChar * name,  const xmlChar * value)

 能:为一个节点新建一个属性

 数:node,节点

          name,属性名称

          value,属性的值

返回值:指向新建属性的指针

xmlAttrPtr  xmlSetProp  (xmlNodePtr node,  const xmlChar * name,  const xmlChar * value)
  能:设置一个节点的属性值。

  数:node,节点指针

        name,属性名称

        value,属性值

返回值:被设置的属性的指针

xmlChar *  xmlGetProp  (xmlNodePtr node,  const xmlChar * name)

  能:根据属性名称获取一个节点的属性。

  数:node,被获取的节点

        name,要获取的属性名称

返回值:属性的值

void  xmlFreeProp  (xmlAttrPtr cur)

  能:释放一个属性结构

  数:cur,要释放属性

返回值:

 

六、设置、获取节点内容content

void  xmlNodeSetContent  (xmlNodePtr cur,const xmlChar * content)

  能:替换节点的内容

  数:cur,节点指针

         content,要设置的content

返回值:

xmlChar * xmlNodeGetContent  (xmlNodePtr cur)

 能:获取一个节点的内容

 数:cur,节点指针

返回值:节点的content或者NULL,返回的内容需要手动释放。

 

七、新建和删除节点

xmlNodePtr  xmlNewNode  (xmlNsPtr ns,  const xmlChar * name)

  能:创建一个新节点

  数:ns,目前还不明确

        name,节点名称

返回值:返回一个执行新节点的指针

void  xmlUnlinkNode  (xmlNodePtr cur)

 能:解除一个节点与它的当前上下文的链接,节点没有被释放,如果需要自由节点后,取消使用xmlfreenode()常规释放它。请注意,命名空间节点不能被解除,因为他们没有他们的父节点的指针。

 数:节点指针

返回值:

void  xmlFreeNode (xmlNodePtr cur)

  能:释放一个节点,这是一个递归行为,所有的字节点也将被释放,该函数并没有接触子节点与链表的关联,所以需要先使用xmlUnlinkNode()函数接触关联。

  数:节点指针

返回值:

 

八、新建兄弟节点sibling

xmlNodePtr  xmlAddNextSibling  (xmlNodePtr cur,  xmlNodePtr elem)

  能:在指定节点的后面添加一个兄弟节点

  数:cur,指定节点

        elem,下一个兄弟节点

返回值:指向新节点的指针或者NULL

 

九、写入xml文件

int  xmlSaveFile  (const char * filename,  xmlDocPtr cur)

  能:写一个XML文档到指定的文件中

  数:filename,文件名称

        cur,文档指针

返回值:如果成功则返回写入的字节数,否则返回-1.

int  xmlSaveFileEnc  (const char * filename,  xmlDocPtr cur,  const char * encoding)

  能:写一个XML文档到指定的文件中,并且转换文件编码格式为制定的格式。

  数:filename,文件名称

        cur,文档指针

        encoding,指定的编码格式

返回值:如果成功则返回写入的字节数,否则返回-1.

 

十、数据结构xmlNode

Structure xmlNode

struct _xmlNode {
    void *      _private        : application data
        type    : type number, must be second !
    const  *     name    : the name of the node, or the entity
    struct _xmlNode *   children        : parent->childs link
    struct _xmlNode *   last    : last child link
    struct _xmlNode *   parent  : child->parent link
    struct _xmlNode *   next    : next sibling link
    struct _xmlNode *   prev    : previous sibling link
    struct _xmlDoc *    doc     : the containing document End of common p
     *    ns      : pointer to the associated namespace
     *   content : the content
    struct _xmlAttr *   properties      : properties list
     *    nsDef   : namespace definitions on this node
    void *      psvi    : for type/PSVI informations
    unsigned short      line    : line number
    unsigned short      extra   : extra data for XPath/XSLT
}

阅读(2985) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~