1

我们正在尝试将我们的 Delphi 环境从 Delphi2007 迁移到 Delphi XE2。我们从 Sourceforge 下载了最新的 Turbopower xml 合作伙伴。网。当我们做一个简单的测试来加载一个 xml 文件时,我们得到一个错误“Invalid XML Character found” 我们的代码行

var 
   testxml : UnicodeString; // a normal String in Xe2 
   FModel: TXpObjModel;
 begin 
    FModel := TXpObjModel.Create(nil); //Step 1 
    FModel.LoadMemory(testxml[1], Length(testxml)); //Step2 
 end. 

代码在第 2 步失败。当变量“Textxml”类型更改为 ansiString 时,xml 被正确加载。

XML 编码是 UTF-8

像这样的东西

<?xml version="1.0" encoding="UTF-8"> 

那么有人可以建议我们如何加载以 Unicode 字符串变量类型存储的 xml 数据吗?

4

1 回答 1

2

您可以尝试将 unicode 字符串转换回 UTF8,例如:

var
  textxml: UnicodeString;
  textutf: UTF8String;
  FModel: TXpObjModel;
begin
  textutf := Utf8Encode(textxml);
  FModel := TXpObjModel.Create(nil); //Step 1
  FModel.LoadMemory(textutf[1], ByteLength(textutf)); //Step2
end;

此外,您应该使用ByteLength()函数,因为内存中字符串的实际大小是 Length*SizeOf(CharType)。

于 2012-01-06T16:19:24.303 回答