opencv 读写XML YML

//序列没有标签
	CvMemStorage *mem = cvCreateMemStorage(0);
	CvFileStorage *file = cvOpenFileStorage("e:\\123.yml",mem,CV_STORAGE_READ | CV_STORAGE_WRITE);
	cvStartWriteStruct(file,NULL,CV_NODE_SEQ );

	cvWriteInt(file,123);//写入的是序列,名称都为NULL
	cvWriteReal(file,32.0);
	cvWriteString(file,"123123");
	
	int dbData[5] = {12,3,5,8};
	const string strType = "i";
	cvWriteRawData(file,dbData,strType.c_str());
	cvWriteComment(file,"my comment",0);//把注释写在该行的后面

	CvFileNode *node = cvGetRootFileNode(file,0);
	if (node != NULL){
		printf("%s\n",node->data.str.ptr);
	}

	cvEndWriteStruct(file);
	cvReleaseFileStorage(&file);
	cvReleaseMemStorage(&mem);

可以看出序列写文件没有节点

CvMemStorage *mem = cvCreateMemStorage(0);
	CvFileStorage *file = cvOpenFileStorage("e:\\123.xml","UserInfo",CV_NODE_MAP );

	cvWriteInt(file,"Integer","Real","String","123123");

	cvWriteComment(file,0);//把注释写在该行的后面
	cvEndWriteStruct(file);

	cvReleaseFileStorage(&file);
	cvReleaseMemStorage(&mem);


如果是MAP,就可以了

代码如下

CvMemStorage *mem1 = cvCreateMemStorage(0);
	CvFileStorage *file1 = cvOpenFileStorage("e:\\123.xml",mem1,CV_STORAGE_READ);

	CvStringHashNode *hashNode = cvGetHashedKey(file1,strlen("UserInfo"));
	CvFileNode *node1 = cvGetFileNode(file1,hashNode);
	if (node1 != NULL){//获取根节点名称
		printf("%s\n",cvGetFileNodeName(node1));
	}

	hashNode = cvGetHashedKey(file1,strlen("Real"));
	CvFileNode *nodeReal = cvGetFileNode(file1,node1,hashNode);
	if (nodeReal != NULL){//获取子节点名称
		printf("%s\n",cvGetFileNodeName(nodeReal));
		printf("%d\n",cvReadInt(nodeReal));
	}

	hashNode = cvGetHashedKey(file1,strlen("Integer"));
	CvFileNode *nodeInteger = cvGetFileNode(file1,hashNode);
	if (nodeInteger != NULL){//获取子节点名称
		printf("%s\n",cvGetFileNodeName(nodeInteger));
		printf("%d\n",cvReadInt(nodeInteger));
	}

	hashNode = cvGetHashedKey(file1,strlen("String"));
	CvFileNode *nodeString = cvGetFileNode(file1,hashNode);
	if (nodeString != NULL){//获取子节点名称
		printf("%s\n",cvGetFileNodeName(nodeString));
		printf("%s\n",cvReadString(nodeString));
	}

	printf("\n");
	printf("%f\n",cvReadRealByName(file1,"Real"));//根据标签名获取值
	printf("%s\n",cvReadStringByName(file1,"String"));
	printf("%d\n",cvReadIntByName(file1,"Integer"));


	cvReleaseFileStorage(&file1);
	cvReleaseMemStorage(&mem1);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇