1

Delphi 環境を 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データをロードする方法を提案できますか?

4

1 に答える 1

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;

また、メモリ内の文字列の実際のサイズは Length*SizeOf(CharType) であるため、ByteLength()関数を使用する必要があります。

于 2012-01-06T16:19:24.303 に答える