首页 > 代码库 > 一个关于Delphi XML处理单元的BUG
一个关于Delphi XML处理单元的BUG
使用delphi的XML处理单元 XMLDoc XMLIntf
在获取XML文本内容的时候, 高版本的Delphi会丢失编码描述....在D7上却是正常的, 下面是测试源码:
procedure TForm1.Button1Click(Sender: TObject);var nXMLDoc: IXMLDocument; i: Integer; nMS: TMemoryStream; nSS: TStringStream; nStr: string;begin nXMLDoc := TXMLDocument.Create(nil); nXMLDoc.Active := True; nXMLDoc.Encoding := ‘GB2312‘; nXMLDoc.AddChild(‘test‘); for i := 0 to 4 do nXMLDoc.DocumentElement.AddChild(‘测试‘).NodeValue := i; with Memo1 do begin Lines.Clear; Lines.Add(‘---- nXMLDoc.XML.Text ----‘); Lines.Add(‘‘); Lines.Add(nXMLDoc.XML.Text); end; nMS := TMemoryStream.Create; nXMLDoc.SaveToStream(nms); nms.Position := 0; with Memo2 do begin Lines.Clear; Lines.LoadFromStream(nms); Lines.Insert(0, ‘‘); Lines.Insert(0, ‘---- nXMLDoc.SaveToStream ----‘); end; nMS.Free; nXMLDoc.SaveToXML(nStr); with Memo3 do begin Lines.Clear; Lines.Add(‘---- nXMLDoc.SaveToXML ----‘); Lines.Add(‘‘); Lines.Add(nStr); end;end;
下面是同样的代码分别在Delphi7 和Delphi2010的执行效果
对比可以发现, XML.Text和SaveToXML这2个方法, 在2010上, 输入以后 encoding="GB2312" 的编码信息会丢失
使用XE5的版本测试也一样会丢失, 只有在D7上是正常的
Delphi7结果
Delph2010结果
http://www.cnblogs.com/hs-kill/p/3829183.html
一个关于Delphi XML处理单元的BUG
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。