DELPHI2010环境下TXMLDocument丢失编码问题

Mr Dang 2017-10-13 03:54:59

function getCheckLotStatusXML(Str_No,Str_NoType,Str_Oper,Str_LineId:string):string;
var
XML_Doc:TXMLDocument;
XML_RootNode:IXMLNode;
begin
XML_Doc:=TXMLDocument.Create(Application);
try
XML_Doc.XML.Add('<?xml version="1.0" encoding="gb2312" standalone="yes"?>');
XML_Doc.XML.Add('<checkLotStatus>');
XML_Doc.XML.Add('</checkLotStatus>');
XML_Doc.Active:=True;
XML_RootNode:=XML_Doc.DocumentElement;
XML_RootNode.AddChild('factory').Text:='W';
XML_RootNode.AddChild('userid').Text:='ADMIN';
XML_RootNode.AddChild('lineId').Text:=Str_LineId;
XML_RootNode.AddChild('no').Text:=Str_No;
XML_RootNode.AddChild('noType').Text:=Str_NoType;
XML_RootNode.AddChild('oper').Text:=Str_Oper;
Result:=XML_Doc.XML.Text;
finally
XML_Doc.Free;
end;
end;


这段代码在DELPHI7下运行正常 ,DELPHI2010下 ,得到的是

'<?xml version="1.0" standalone="yes"?>'#$D#$A'<checkLotStatus>'#$D#$A#9'<factory>WASION</factory><userid>ADMIN</userid><lineId>12345</lineId><no>1</no><noType>C</noType><oper>DX2400</oper></checkLotStatus>'#$D#$A

丢失了 encoding="GB2312" ,帮忙看看 ~~
...全文
241 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyhoo163 2017-10-15
  • 打赏
  • 举报
回复
这是Delphi TXMLDocument 的一个Bug ,在2010版,不能保存encoding值。 解决办法:使用TNativeXml,或是生成XML后,通过修改XML,加入encoding值。

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧