易截截图软件、单文件、免安装、纯绿色、仅160KB

zzOPENCV XML函数完美支持中文方法

           
XML即extensibe markup language的缩写,也就是可扩展标识语言。由于其开放性,越来越多的软件采用它作为描述语言;由于其平台无关性,越来越多的系统采用它作为数据传递中介。计算机行业已经把XML为数据交换的标准,并提供了相当数量的支持工具。但是,C++中解析xml还依然不够完美,特别是对于中文字符集的支持。大家总是遇到各种问题,本文改进了OPENCV的XML读写函数,支持中文字符串。
在OPENCV开发包中,存在着读写XML的一系列函数,虽然并不完善,有些功能还有欠缺。但是,比起动辄几兆的XML读写开发包(如Xerces-C++),它容易使用,代码量小。对于在计算机视觉研究过程中的数据交换任务,这些简单IO函数基本足够了。唯一可惜的是,它目前不支持中文,在某些需要中文字符串的场合,有些遗憾。能不能通过简单的修改,让它支持中文?作者做了如下试验,修改方法简单可行!
首先,分析cxpersistence.cpp中的函数,发现只需要修改一处就能够让XML系列函数支持中文[2]。也就是检测字符C是否可打印的宏cv_isprint。即将:
#define cv_isprint(c)     ((signed char)(c) >= (signed char)' ')
替换为
#define cv_isprint(c)     ((unsigned char)(c) >= 0x20 )
经过一系列测试,发现这样的修改是可行的。在debug版完全正常,可是,当用release发布时。VC罢工了,编译的程序进入类似死循环的状态。接着,进入漫长的release版本和debug版本的剖析分析[3]。本文来自:http: //www.shenlejun.cn.
最终,得到结论:DEBUG版和RELEASE版的区别,是cxpersistence.cpp中的XML解析函数用到的isdigit(),isalpha(),isalnum(),isspace()等C库函数,其DEBUG版和RELEASE版的行为居然不一样。解决这些问题的途径很多,最简单的方法就是,将cxpersistence.cpp中所有的
char c
替换为
unsigned char c
通过上述2处修改,OPENCV的XML读写函数,完全支持中文(包括简体和繁体)了。呵呵!
测试程序如下:本文来自:蜜蜂电脑.
int sub_test_opencv_xml_write(void)
{
 // 创建文件存储对象
 CvFileStorage *fs=cvOpenFileStorage("test.xml",0,CV_STORAGE_WRITE);
 // 写注释
 cvWriteComment(fs,"测试写XML文件",1);
 
 // 开始写结构,类型是图map,也就是有名字的无序节点集合
 cvStartW


相关文档:

XML常用操作

 XML在我们的程序中用到的越来越多,因为它存储、读取、修改都比较方便。
下面我来分享一下XML的常用操作(增删改查),下面是程序运行效果:
增(增加节点包括创建XML):
/// <summary>
/// 创建XML文档
/// </summary>
/// <param name="path"></param>
......

XML文件绑定数据集控件操作

//数据绑定
    public void DataBind()
    {
        DataSet ds = new DataSet();
        ds.ReadXml(Server.MapPath(@"App_data/dbGuest.xml"));
&nbs ......

XML分解实例

原贴: http://topic.csdn.net/u/20100414/11/c69748ac-e0b2-490f-bde9-7c5284c3660c.html?seed=1832202493
 
declare @xml xml=
'<upd:Update xmlns:lar="http://schemas.microsoft.com/msus/2002/12/LogicalApplicabilityRules" xmlns:cmd="http://schemas.microsoft.com/msus/2002/12/UpdateHandlers/Command ......

XML 增、删、改、求平均数

string file = "c:\\work.xml";
        private void btnCearte_Click(object sender, EventArgs e)
        {
            XmlDocument doc = new XmlDocument();
    ......

XML DTD XSD XSL XDR都有什么区别?

XML=可扩展标记语言(eXtensible Markup Language).
可扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。
XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号