Delphi 2010 DeHL Serialization XML и пользовательский атрибут: как это работает? - PullRequest
1 голос
/ 01 апреля 2010

Я пытаюсь исследовать DeHL с пользовательским атрибутом Delphi 2010, и у меня возникает проблема.

 TAppParamTest = class
  public
    User: string;
    Password: string;
  end;

  TAppParam = class
  private
    FTest: TAppParamTest;
  public

    constructor Create;
    destructor Destroy; override;

    property Test: TAppParamTest read FTest write FTest;
  end;

это хорошо работает: когда я сериализуюсь, у меня это

<TAppParam xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:DeHL="http://alex.ciobanu.org/DeHL.Serialization.XML" DeHL:class="AppParam_unt.TAppParam" DeHL:refid="1">
  <FTest DeHL:class="AppParam_unt.TAppParamTest" DeHL:refid="2">
    <User>User</User>
    <Password>Psw</Password>
  </FTest>
</TAppParam

но я хочу это:

<TAppParam xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:DeHL="http://alex.ciobanu.org/DeHL.Serialization.XML" DeHL:class="AppParam_unt.TAppParam" DeHL:refid="1">
  <Test DeHL:class="AppParam_unt.TAppParamTest" DeHL:refid="2">
    <User>User</User>
    <Password>Psw</Password>
  </Test>
</TAppParam

поэтому я хочу добавить пользовательский атрибут в свой класс:

  TAppParam = class
      private
        [XmlElement('Test')] 
        FTest: TAppParamTest;
      public

        constructor Create;
        destructor Destroy; override;

        property Test: TAppParamTest read FTest write FTest;
      end;

но он не компилируется: (

Где я ошибаюсь?

1 Ответ

4 голосов
/ 01 апреля 2010

Использование: [XmlName('Test')] [XmlElement]

Я изменил эти атрибуты, поскольку это уменьшило сложность кода в сериализаторе.

...