libxml2如何解析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差不多
1.文件操作函数 a)保存文件 int xmlSaveFile (const char * filename,xmlDocPtr cur) 将一个内存中的文档,保存到一个文件当中。如果编译使用了压缩功能,并且启用了,这个函数会默认使用压缩(压缩也就是忽略文件当中的格式)。如果设定filanem为”-“,那么将会直接输出到stdout。
int xmlSaveFileEnc (const char * filename,96)">xmlDocPtr cur,const char * encoding)
将一个文本保存在文件当中,并且按照要求转换到目标字符集,例如:GB2312
int xmlSaveFileTo (xmlOutputBufferPtr buf,const char * encoding)
将文件保存到一个I/O缓存当中。如果这个缓存已经通过xmlOutputBufferClose()关闭掉了,那么将失败。
int xmlSaveFormatFile (const char * filename,int format)
格式化的将内存文档保存到一个文件当中,格式设定与xmlDocDumpFormatMemory()中一样。
int xmlSaveFormatFileEnc (const char * filename,const char * encoding,int format)
有格式整理的xmlSaveFileEnc()。一般都采用这个函数进行内存DOC指针的保存工作。 在调用这个函数以前,最好调用如下两个语句,来整理内容: xmlKeepBlanksDefault(0); xmlIndentTreeOutput= 1;
int xmlSaveFormatFileTo (
有格式整理的xmlSaveFileTo()。
b)复制节点文件到内存 voidxmlDocDumpFormatMemory (xmlDocPtrcur, 将一个XML文档指针复制到内存当中,并且返回他的内存字符指针和容量大小。返回的内存需要显性的调用xmlFree函数释放内存。注意,在xmlIndentTreeOutput = 1或者调用了xmlKeepBlanksDefault(0)函数,@format = 1的设定才能起到作用。这个函数应该可以对输出的文本进行一定的格式调整,而xmlDocDumpMemory函数不会进行调整,这就是两者的区别。 通过这个函数建立的xmlChar,需要调用xmlFree进行内存释放。
在调用这个函数以前,最好调用如下两个语句,来整理内容: xmlKeepBlanksDefault(0); xmlIndentTreeOutput= 1; c)从内存中复制到一个文档结构中 xmlDocPtr xmlParseMemory (const char * buffer,int size)
通过内存中的BUFF,建立一个DOC文档。通过这个函数建立DOC文档以后,这个文档需要使用xmlFreeDoc函数进行内存释放。
2.节点操作函数 a)复制节点 xmlNodePtrxmlCopyNode (constxmlNodePtrnode, 复制一个节点
xmlNodePtrxmlCopyNodeList (constxmlNodePtrnode) Do a recursivecopy of the node list. Use xmlDocCopyNodeList() if possible to ensure stringinterning.
3.属性操作 xmlChar*xmlGetProp ( constxmlChar*name) Search and get thevalue of anattributeassociated to a node This does theentity substitution. This function looks in DTDattributedeclaration for #FIXED or defaultdeclaration values unless DTD use has been turned off. NOTE: this function actsindependently of namespaces associated to the attribute. Use xmlGetNsProp() orxmlGetNoNsProp() for namespace aware processing.
4.字符串操作 a)字符串比较 int xmlStrEqual (const xmlChar * str1,const xmlChar * str2)
判断两个字符串是否相同,比xmlStrcmp的速度要快一点。
int xmlStrcmp (const xmlChar * str2)
等同于strcmp int xmlStrcasecmp (const xmlChar * str2)
等同于strcasecmp int xmlStrncmp (const xmlChar * str2,int len)
等同于strncmp int xmlStrncasecmp (const
等同于strncasecmp int xmlUTF8Charcmp (const xmlChar * utf1,96)">xmlChar * utf2)
compares the twoUCS4 values
int xmlStrQEqual (const xmlChar * pref,96)">xmlChar * name,96)">xmlChar * str)
Check if a QNameis Equal to a given string
参考文献: ?http://xmlsoft.org/html/index.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |