我们正在尝试将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数据吗?
答案 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)。