加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xml节点解析成字符串的方法

发布时间:2020-12-16 05:32:19 所属栏目:百科 来源:网络整理
导读:之前汇总了一篇关于 xml文档与字符串转换 的文章,文章主要是说明了如何将整个xml文档解析成字符串,并没有说明将xml文档中的某个节点转换成字符串的方法。项目中需要这个功能,所以就研究了一下,下面贴出代码供参考使用。 来自:http://blog.csdn.net/shan

之前汇总了一篇关于xml文档与字符串转换的文章,文章主要是说明了如何将整个xml文档解析成字符串,并没有说明将xml文档中的某个节点转换成字符串的方法。项目中需要这个功能,所以就研究了一下,下面贴出代码供参考使用。

来自:http://blog.csdn.net/shanzhizi

主要用到的libxml2的函数是:xmlNodeDump

下面这个函数可以将指定的节点以字符串的格式输出,包含<nodename></nodename>以及该节点的子节点。

int PrintXMLNodeString(const char *pXMLFilePath,const char *pNodeName)
{
	xmlDocPtr doc;   //定义解析文档指针
	xmlNodePtr curNode;  //定义结点指针(你需要它为了在各个结点间移动)
	const char *szDocName = pXMLFilePath;

	//szDocName = pXMLFilePath;
	doc = xmlReadFile(szDocName,"GB2312",XML_PARSE_RECOVER);  //解析文件
	if (NULL == doc){    
		fprintf(stderr,"Document not parsed successfully. n");     
		return -1;
	}
	curNode = xmlDocGetRootElement(doc);

	if (NULL == curNode){
		fprintf(stderr,"empty documentn");
		xmlFreeDoc(doc);
		return -1;
	}

	
	curNode = curNode->children;
	while (NULL != curNode){    
		//修改newNode2的内容
		if (!xmlStrcmp(curNode->name,BAD_CAST pNodeName)){
			xmlBufferPtr nodeBuffer = xmlBufferCreate();
			if(xmlNodeDump(nodeBuffer,doc,curNode,1) > 0){
				printf("%sn",(char *)nodeBuffer->content);
				printf("use:%dnsize:%dn",nodeBuffer->use,nodeBuffer->size);
			}
			xmlBufferFree(nodeBuffer);
			break;
		}

		curNode = curNode->next;
	}
	
	printf("game overn");
	xmlFreeDoc(doc);
	return 0;

关于其他的xml文章请参考: xml系统文章。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读