zoukankan      html  css  js  c++  java
  • 一个关于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

  • 相关阅读:
    定义扩展点,实现发布订阅机制
    JS阻止事件冒泡
    Virtualbox安装黑苹果
    外部Tomcat使用Java热部署利器JRebel
    在Windows server 2016上使用docker
    Tomcat加载web.xml文件的顺序详解
    IDEA反编译整个jar包
    java集合类的继承结构
    利用BodyTagSupport创建带标签体的自定义标签
    jquery实现简单弹出框
  • 原文地址:https://www.cnblogs.com/findumars/p/5812162.html
Copyright © 2011-2022 走看看