delphi - Delphi 2010 DeHL序列化XML和自定义属性:如何工作?

标签 delphi xml-serialization delphi-2010 dehl

我尝试使用Delphi 2010自定义属性调查DeHL,但出现问题。

 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;


但它不会编译:(

我在哪里犯错?

最佳答案

用:
[XmlName('Test')]
[XmlElement]

我更改了这些属性,因为它降低了序列化程序中的代码复杂性。

关于delphi - Delphi 2010 DeHL序列化XML和自定义属性:如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2559297/

相关文章:

Delphi TFrame 创建/销毁

delphi - MessageDlg 不发出声音

java - AXiS2 - 返回字符串值时出现问题。 < 和 > 正在转换为 < 和 >

java - Eclipse 中的 "import java.beans.XMLEncoder"问题

delphi - 如何告诉 CreateFile 我想要附加到现有文件?

delphi - 在运行时创建接口(interface)实现者实例

Delphi 7,如何将Paintbox内容复制到Tbitmap?

delphi - 如何将MySQL Blob字段转换为插入语句的字符串

c# - 如何在没有复数父元素的情况下从 xml 反序列化列表?

delphi - 手动滚动 TComboBox