起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 341|回复: 10

【结贴】[请求]关于TXMLDocument的LoadFromXML遇到中文报错的问题

[复制链接]
发表于 2010-4-27 22:54:04 | 显示全部楼层 |阅读模式
var
    XMLDoc : TXMLDocument;              
    T : WideString;
begin
T := '';
     T := T + '<NewDataSet>' + #10#13;
     T := T + '        <HTBZB>' + #10#13;
     T := T + '                <_WTSGUID>8172A7FAF90F4A1A8185F69DD9C74D25</P_WTSGUID>' + #10#13;
     T := T + '                <_WTSBH>W20100427</P_WTSBH>' + #10#13;
     T := T + '                <_XMLB>基建</P_XMLB>' + #10#13;
     T := T + '        </HTBZB>' + #10#13;
     T := T + '</NewDataSet>' + #10#13;
      XMLDoc := TXMLDocument.Create(self);
     //XMLDoc.Encoding := 'UTF-8';
     XMLDoc.LoadFromXML(T);  // 执行到这里报错: 文本内容中发现无效的字符

     XMLDoc.Free;   
end;

执行到XMLDoc.LoadFromXML(T);  这一句报错:文本内容中发现无效的字符
将文本中的中文字符 "基建" 换成别的就没有问题,这个中文问题怎么解决??别人提供的WebService接口中的数据中必定会有中文的.紧急求助

X3的版本是2827

另外如果打开 XMLDoc.Encoding := 'UTF-8'; 执行到这一句也会有内存报错,报错指向的文件是 xmlrtl60.bpl
回复

使用道具 举报

 楼主| 发表于 2010-4-28 10:47:33 | 显示全部楼层
有人能帮忙看看么?谢谢
回复 支持 反对

使用道具 举报

发表于 2010-4-28 11:07:12 | 显示全部楼层
楼主,上面的代码在delphi 是可以正常的吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-4-28 11:52:57 | 显示全部楼层
在delphi 不用 //XMLDoc.Encoding := 'UTF-8'; 这一句是正常的,中文也没有问题,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-4-28 14:42:22 | 显示全部楼层
还有什么办法解决?
回复 支持 反对

使用道具 举报

发表于 2010-4-28 15:40:22 | 显示全部楼层
楼主,你上面的那些元素直接放到一个xml文件中,然后用ie打开看看是否正常呢。
回复 支持 反对

使用道具 举报

发表于 2010-4-28 15:57:11 | 显示全部楼层
XML文件写上头还是比较好的,像下面这样写试试:
     T := '<?xml version="1.0" encoding="gbk" ?>';
     T := T + '<NewDataSet>' + #10#13;
     T := T + '        <HTBZB>' + #10#13;
     T := T + '                <_WTSGUID>8172A7FAF90F4A1A8185F69DD9C74D25</P_WTSGUID>' + #10#13;
     T := T + '                <_WTSBH>W20100427</P_WTSBH>' + #10#13;
     T := T + '                <_XMLB>基建</P_XMLB>' + #10#13;
     T := T + '        </HTBZB>' + #10#13;
     T := T + '</NewDataSet>' + #10#13;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-4-28 16:24:35 | 显示全部楼层
回6楼: 用IE打开正常

回7楼: 加了文件头说明也不行,这个我尝试过了


下面是我导出的XML文件,该文件内容来源至.Net编写的WebService接口输出的数据集,数据集经过了DataSet.WriteXML转换成WideString字符串传出,我用Delphi6+SP2封装了这个WebService接口导入到X3中,在X3调用成功获取该WideString字符串

w.rar

421 Bytes, 下载次数: 68

回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-4-28 16:33:26 | 显示全部楼层
。。。。7楼,你是对的,加上文件头OK了
我原来尝试的是
<?xml version="1.0" encoding="UTF-8" ?>
因为.Net那边的输出码是UTF-8
现在换成gbk的就OK了,谢谢了,可以结了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-4-28 16:35:34 | 显示全部楼层
不过还是有疑问,为什么我用UTF-8就是不行呢?明明.Net那边也是用UTF-8的啊
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-9 06:49 , Processed in 0.043177 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表