2888|9

74

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

EVC XML文件的读写 [复制链接]

下载网上的CMarkup类,在EVC下实现了XML文件的写入和读取,可是使用该类在VC6.0下编写的程序生成的xml文件下载到ppc2003中去读取不了,有没有人碰到类似的问题?难道EVC下的程序只能读取通过EVC编写并生成的XML文件吗?

最新回复

我把你这段代码加到我代码里面 ,怎么什么反映都没有啊??? 也没有提示错误。 生成不了文件。也写不了文件。   详情 回复 发表于 2009-2-18 11:43
点赞 关注

回复
举报

70

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
这个和eVC/VC无关,应该是CMarkUp对XML写入时,是否加入了特殊的代码?你找一个通用的,不是你程序生成的XML,下载到PPC2003中去,看看能不能读。
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
你把生成的xml保存下来用IE打开看看,如果格式不对,IE会抱错的
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

4
 
你把CMarkup生成的xml保存成Unicode格式的再试试,如果还不行,可能就是有些特殊的东西在xml中了。
一般在xml的头上。
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

5
 
VC6.0 下生成的默认CString字符是ANSI的,看看你你的XML 的encoding="GB2312"?了没有,在PPC2003下读取的字符都是Unicode,你要字符转换一下
 
 
 

回复

96

帖子

0

TA的资源

一粒金砂(初级)

6
 
同样的一段代码在EVC下执行和在VC下执行后生成的XML文件,用十六进制编码器查看发现中文编码完全不一样,用VC执行后生成的xml文件在EVC中读取中文内容为乱码,请各位指点下!代码如下
        CMarkup *m_pXML=new CMarkup();
        m_pXML->AddElem(_T("PatrolTable"));
        CString csTemp;
        for (int i = 0; i < 5; i++)
        {
                m_pXML->AddChildElem(_T("Record"));
                m_pXML->IntoElem();
                m_pXML->AddChildElem(_T("ID"),1,0);
                m_pXML->AddChildElem(_T("TASKID"),2,0);
                m_pXML->AddChildElem(_T("LINEID"),3,0);
                m_pXML->AddChildElem(_T("LINENAME"), _T("A区大楼"),0);
                m_pXML->AddChildElem(_T("EQUIPID"),2,0);
                m_pXML->AddChildElem(_T("EQUIPRFID"),_T("131313"),0);
                m_pXML->AddChildElem(_T("EQUIPNAME"),_T("巡检点2"),0);
                m_pXML->AddChildElem(_T("REQTIME"),_T("2008-6-14 14:18:14"),0);
                m_pXML->AddChildElem(_T("REQPERSONID"),_T("007"),0);
                m_pXML->AddChildElem(_T("REQPERSONNAME"),_T("张三"),0);
                m_pXML->AddChildElem(_T("FACTTIME"),_T("2008-6-14 14:18:14"),0);
                m_pXML->AddChildElem(_T("FACTPERSONID"),_T(""),0);
                m_pXML->AddChildElem(_T("FACTPERSONNAME"),_T(""),0);
                m_pXML->AddChildElem(_T("STATUS"),1,0);
                m_pXML->AddChildElem(_T("REASON"),_T("呵"),0);
                m_pXML->AddChildElem(_T("MEMO"),_T("呵"),0);
                m_pXML->OutOfElem();               
        }       
        m_pXML->Save(_T("c:\\UserInfo.xml"));
        delete m_pXML;
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

7
 
vc 下XML 的encoding是GB2312,在ppc2003中该如何转换为Unicode
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

8
 
楼主的问题我遇到过,CMarkup在evc和vc下应用是没问题的,可以互相读xml。主要是要解决编码问题。
在evc下读xml主要代码如下:
unsigned char* pBuffer = NULL;
pBuffer = new unsigned char[lenth+1];
long nBytesRead = f.Read( pBuffer, lenth );
CString www;
www=CString (pBuffer);
这里有个读文件长度的问题,即lenth。如果按这种方式读,有时会读到汉字的一般,所以还要判断是否只读了汉字的一般。
我的方法是用pBuffer[lenth-1]>128来判断。
evc下写xml需要应用以下编码转换xml:
int actuallength=0;       
actuallength=WideCharToMultiByte(CP_ACP,NULL,writestr,-1,NULL,0,NULL,NULL);       
char* pBuffer = new char[actuallength];
WideCharToMultiByte(CP_ACP,NULL,writestr,writestr.GetLength(),pBuffer,actuallength,NULL,NULL);
楼主可以用debug具体查看编码转换在内存中的具体细节


 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

9
 
如lenux 所说的那样,将VC下生成的xml文件,将该文件保存为UTF-8,下载到PPC中可以读取了,编码的问题!
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

10
 
引用 5 楼 babala01 的回复:
同样的一段代码在EVC下执行和在VC下执行后生成的XML文件,用十六进制编码器查看发现中文编码完全不一样,用VC执行后生成的xml文件在EVC中读取中文内容为乱码,请各位指点下!代码如下
CMarkup *m_pXML=new CMarkup();
m_pXML->AddElem(_T("PatrolTable"));
CString csTemp;
for (int i = 0; i  < 5; i++)
{
m_pXML->AddChildElem(_T("Record"));
m_pXML->IntoElem();
m_pXML->AddChildElem(_T("ID"),1,0);
m_pXML->AddC…


我把你这段代码加到我代码里面 ,怎么什么反映都没有啊???
也没有提示错误。
生成不了文件。也写不了文件。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表