libxml库之xmlParseMemory和xmlDocDumpFormatMemory函数 .
来源:互联网 发布:淘宝css代码生成器 编辑:程序博客网 时间:2024/06/10 17:14
转自: http://blog.csdn.net/iamlate/article/details/6955698
两个函数,怎么在内存中处理xml文件。有个疑问,xmlChar *xmlbuff;这样系统第一次分配了xmlbuff的大小以后。对xml做修改,可以成功吗。
有空试试。
函数原型:
- xmlParseMemory
- xmlDocPtr xmlParseMemory (const char * buffer,
- int size)
- parse an XML in-memory block and build a tree.
- buffer: an pointer to a char array
- size: the size of the array
- Returns: the resulting document tree
- Function: xmlParserAddNodeIn
xmlParseMemoryxmlDocPtrxmlParseMemory(const char * buffer, int size)parse an XML in-memory block and build a tree.buffer:an pointer to a char arraysize:the size of the arrayReturns:the resulting document treeFunction: xmlParserAddNodeIn
- 解析xml字符串
- xmlDocPtr doc = xmlParseMemory(pXml, length);
- //根据xmldoc获得xml的根节点
- xmlNodePtr cur = xmlDocGetRootElement(doc);
- //获得子节点:->children获得不是第一个子节点,必须用next才能获得第一个子节点
- cur = cur->children;
- cur = cur->next;
- // 获得节点信息中的内容: 注意释放资源
- xmlChar* key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1);
- xmlFree(key);
- //获得节点信息属性的值:属性name,注意释放资源
- xmlChar* fversion = xmlGetProp(cur, "version");
- xmlFree(fversion);
- //根节点相关函数
- 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) //设置节点属性
- =xmlNodeListGetstring(doc, cur->xmlChildrenNode, 1);
- =xmlNodeContent(cur);
解析xml字符串xmlDocPtr doc = xmlParseMemory(pXml, length); //根据xmldoc获得xml的根节点xmlNodePtr cur = xmlDocGetRootElement(doc); //获得子节点:->children获得不是第一个子节点,必须用next才能获得第一个子节点cur = cur->children;cur = cur->next;// 获得节点信息中的内容: 注意释放资源xmlChar* key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1);xmlFree(key);//获得节点信息属性的值:属性name,注意释放资源xmlChar* fversion = xmlGetProp(cur, "version");xmlFree(fversion);//根节点相关函数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) //设置节点属性=xmlNodeListGetstring(doc, cur->xmlChildrenNode, 1);=xmlNodeContent(cur);
===========================================================================================
函数原型:
- Function: xmlDocDumpFormatMemory
- void xmlDocDumpFormatMemory (xmlDocPtr cur,
- xmlChar ** mem,
- int * size,
- int format)
- Dump an XML document in memory and return the #xmlChar * and it's size. It's up to the caller to free the memory with xmlFree(). Note that @format = 1 provide node indenting only if xmlIndentTreeOutput = 1 or xmlKeepBlanksDefault(0) was called
- cur: the document
- mem: OUT: the memory pointer
- size: OUT: the memory length
- format: should formatting spaces been added
Function: xmlDocDumpFormatMemoryvoidxmlDocDumpFormatMemory(xmlDocPtr cur, xmlChar ** mem, int * size, int format)Dump an XML document in memory and return the #xmlChar * and it's size. It's up to the caller to free the memory with xmlFree(). Note that @format = 1 provide node indenting only if xmlIndentTreeOutput = 1 or xmlKeepBlanksDefault(0) was calledcur:the documentmem:OUT: the memory pointersize:OUT: the memory lengthformat:should formatting spaces been added
程序示例:
- /**
- * section: InputOutput
- * synopsis: Output to char buffer
- * purpose: Demonstrate the use of xmlDocDumpMemory
- * to output document to a character buffer
- * usage: io2
- * test: io2 > io2.tmp ; diff io2.tmp io2.res ; rm -f io2.tmp
- * author: John Fleck
- * copy: see Copyright for the status of this software.
- */
- #include <libxml/parser.h>
- #if defined(LIBXML_TREE_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
- int
- main(void)
- {
- xmlNodePtr n;
- xmlDocPtr doc;
- xmlChar *xmlbuff;
- int buffersize;
- /*
- * Create the document.
- */
- doc = xmlNewDoc(BAD_CAST "1.0");
- n = xmlNewNode(NULL, BAD_CAST "root");
- xmlNodeSetContent(n, BAD_CAST "content");
- xmlDocSetRootElement(doc, n);
- /*
- * Dump the document to a buffer and print it
- * for demonstration purposes.
- */
- xmlDocDumpFormatMemory(doc, &xmlbuff, &buffersize, 1);
- printf("%s", (char *) xmlbuff);
- /*
- * Free associated memory.
- */
- xmlFree(xmlbuff);
- xmlFreeDoc(doc);
- return (0);
- }
- #else
- #include <stdio.h>
- int
- main(void)
- {
- fprintf(stderr,
- "library not configured with tree and output support\n");
- return (1);
- }
- #endif
0 0
- libxml库之xmlParseMemory和xmlDocDumpFormatMemory函数
- libxml库之xmlParseMemory和xmlDocDumpFormatMemory函数 .
- 关于函数xmlDocDumpFormatMemory
- libxml主要函数说明
- libxml主要函数说明
- libxml主要函数说明
- libxml主要函数说明
- libxml主要函数说明
- libxml编程--函数总结
- php的libxml函数
- libxml主要函数说明
- libxml主要函数说明
- PHP Libxml 函数
- libxml教程常用函数详解
- libxml主要函数说明 (一)
- libxml主要函数说明 (二)
- libxml库应用--DOM
- libxml库教程
- facebook网站为什么如此简洁?
- 在android系统使用LitJson
- Mahout安装与配置
- vim全局替换命令
- android strings.xml转义字符, 注意细节解决
- libxml库之xmlParseMemory和xmlDocDumpFormatMemory函数 .
- LayoutInflater 与 inflate
- [BASIC-20] 数的读法
- Android AVD创建及设置中各参数详解
- 推特为什么上不去?国内为什么要把这种网站屏蔽了呢?
- js跳转到页面
- 李本虎律师:网络视频”快播“的问题
- 高通 低通 滤波器
- 地图API自定义标注点击跳转