Использование 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).

Другие вопросы по тегам