Использование XML-партнера Turbopower с Delphi XE 2
Мы пытаемся перенести среду Delphi с Delphi2007 на Delphi XE2. Мы загрузили последнюю версию партнера Turbopower xml от Sourceforge. сеть. Когда мы делаем простой тест для загрузки 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">
так может кто-нибудь предложить нам, как загрузить XML-данные, хранящиеся в строковой переменной типа Юникод?
1 ответ
Вы можете попытаться преобразовать строку 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).