一个关于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 := to 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 := ;
with Memo2 do
begin
Lines.Clear;
Lines.LoadFromStream(nms);
Lines.Insert(, '');
Lines.Insert(, '---- 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结果
一个关于Delphi XML处理单元的BUG的更多相关文章
- 一个简单的XML与数组之间的转换
xml是网络使用最多的数据交换格式,所以,不掌握怎么操作它,又有蛋疼的了. php中可以操作xml的类/函数很多,个人认为最简单的是SimpleXMLElement这个类,它的使用就跟其名字一样:简单 ...
- Delphi Xml
用递归方法,使用 xml 文档生成 Treeview 树形视图.由于是动态生成,所以可以通过修改 xml 的逻辑来定制 Treeview 的结构,从而实现了 xml 对 Treeview 的动态配置, ...
- delphi XML 原来可以玩接口
以下代码旨在 脱离TXMLDocument 操作 xml unit Unit3; interface uses Windows, Messages, SysUtils, Variants, Class ...
- 怎样才能提交一个让开发人员拍手叫好的bug单
怎样才能提交一个让开发人员拍手叫好的bug单 软件测试人员写得最多的文档就是测试用例和BUG,现在测试用例和BUG都没有标准的模板,每个公司使用的缺陷管理工具都有可能不一样,如果你换了一家公司就有可能 ...
- NativeXml: A native Delphi XML parser and writer
http://www.simdesign.nl/xml.html This software component contains a small-footprint Object Pascal (D ...
- XML的应用 ---- 从一个范例看xml数据、xsd验证、xslt样式
从一个范例看XML的应用 引言 如果你已经看了Asp.Net Ajax的两种基本开发模式 这篇文章,你可能很快会发现这样一个问题:在那篇文章的方式2中,客户端仅仅是发送了页面上一个文本框的内容到服务端 ...
- Java中,一个存在十几年的bug...
今天,分享一个JDK中令人惊讶的BUG,这个BUG的神奇之处在于,复现它的用例太简单了,人肉眼就能回答的问题,JDK中却存在了十几年.经过测试,我们发现从JDK8到14都存在这个问题. 大家可以在自己 ...
- 面试题(造火箭必备技能):请举例一个最有成就感的性能bug
当前,绝大部分招聘都有性能要求或者把其作为加分项(会性能优先),哪怕你不是面试的性能,面试的时候可能会问性能,所以大家才会有"面试造火箭,进去拧螺丝"的共鸣.至于企业为什么重视性能 ...
- 记Windows的一个存在了十多年的bug
bug Windows有一个bug,持续了十多年,从Windows Visita开始(2007年),一直存在,直到Windows11(2021年)才修复(其实也不叫修复,后面我再具体说),而Windo ...
随机推荐
- XAML Region标签功能
XAML本身没有Region标签功能,很郁闷.现在有插件可以实现该功能了! <!-- Region (Any Text You Want) --> Your Code <!-- ...
- ural 1339. Babies
1339. Babies Time limit: 1.0 secondMemory limit: 64 MB O tempora! O mores! Present-day babies progre ...
- float使内联支持宽高
float使内联元素支持了宽高,可以设置宽高属性:float消除内联元素的空格:
- ubifs核心功能 -- 垃圾回收
可回收空间的分类 垃圾回收的目的是再利用(回收后的空间大小能写入有效的node),如果再利用的价值越低,其回收的必要性越低.为了进行有效的垃圾回收,UBIFS对可回收空间做了2个层次的水线划分: 死空 ...
- C# Textbox的ImeMode取值对中文输入法的影响 (转)
摘自:http://blog.csdn.net/jhycjhyc/article/details/6578570 C# Textbox的ImeMode取值对中文输入法的影响 取值 ...
- 【Go语言】学习资料
这段时间一直在看Go语言,6月3日Apple发布了swift发现里面竟然也有许多Go语言的影子,截至现在每天都在感觉到Go语言的强大.确实值得一学 今天在这里给园友们推荐一些Go语言的学习资料 网站 ...
- Apache Jmeter发送post请求
下面用Jmeter发送一个post请求, 对应的js代码如下: $("#register_a").click(function() { var name = $("#un ...
- [LintCode] Valid Parentheses 验证括号
Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the inpu ...
- [CareerCup] 17.7 English Phrase Describe Integer 英文单词表示数字
17.7 Given any integer, print an English phrase that describes the integer (e.g., "One Thousand ...
- Hibernate---单条记录的增删改查
package com.hanqi.test; import static org.junit.Assert.*; import java.util.Date; import org.hibernat ...