Использование Turbopower XML Partner с Delphi XE 2 - PullRequest
1 голос
/ 06 января 2012

Мы пытаемся перенести нашу среду 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»to ansiString Тогда xml загружен правильно.

Кодировка XML - это UTF-8

что-то вроде этого

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

, поэтому любой может предложить нам, как загрузить данные XML, хранящиеся в строковой переменной типа Юникод?

1 Ответ

2 голосов
/ 06 января 2012

Вы можете попытаться преобразовать строку 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).

...