使用Turbopower XML与Delphi XE 2合作

时间:2012-01-06 12:15:20

标签: delphi delphi-xe2 turbopower

我们正在尝试将Delphi Environement从Delphi2007迁移到Delphi XE2。我们从Sourceforge下载了最新的Turbopower xml合作伙伴。净。当我们进行一个简单的测试来加载一个xml文件时,我们得到一个错误“找到无效的XML字符”我们的代码行

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数据吗?

1 个答案:

答案 0 :(得分: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)。