Omni XML可以反序列化包含对象列表的对象吗?

时间:2013-02-25 00:17:47

标签: xml delphi delphi-xe2 pascal omnixml

例如,如何序列化这样的对象:

unit u_Configuration;

interface

uses
  Classes,
  Generics.Collections,
  OmniXML,
  OmniXMLPersistent
  ;

type
  TMyObject = class (TPersistent)
    strict private
      fName : String;
    public
    published
      property Name: String read fName write fName;
  end;

  TConfiguration = class(TPersistent)
    strict private
      fTheList : TList<TMyObject>;
    private
    public
    published
      property TheList: TList<TMyObject> read fTheList write fTheList;

  end;

implementation

end.

1 个答案:

答案 0 :(得分:2)

OmniXML序列化TPersistent的后代。它序列化了它们的属性,但是对于具有对象类型的属性,只有TPersistent的后代被序列化。 TList来自TEnumerable,它来自TObject,所以它没有资格。 OmniXML内置了用于TCollection的特殊处理。

您可以手动序列化其他类。