You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

有没有类似Go语言的Delphi XML序列化/反序列化库支持record类型?

Delphi XML 反序列化到 Record 的现成解决方案

方案1:轻量 XmlSerializer 开源库

这是专门适配Delphi的轻量XML序列化组件,无额外依赖,体积极小,原生支持record类型,映射逻辑和Go的标签用法高度相似:通过Delphi自定义属性标记字段对应XML属性/子节点,同时支持动态数组、嵌套record等复杂结构,完全匹配你的需求。

使用示例

首先给你的record类型添加映射标记:

uses Xml.Serializer;

type
  TAddress = record
    [XmlAttribute] // 标记为映射到XML节点属性
    City: string;
    [XmlAttribute]
    State: string; 
  end;

  TAccount = record
    ID: string; // 默认映射为子节点,和你提供的XML结构匹配
  end;

  TAccounts = record
    [XmlAttribute]
    ID: string;
    [XmlArrayItem('Account')] // 指定数组子项的节点名称
    Account: TArray<TAccount>;
  end;

  [XmlRoot('person')] // 指定根节点名称
  TPerson = record
    Address: TAddress;
    [XmlAttribute]
    AccountsID: Integer;
    Accounts: TAccounts;
  end;

反序列化仅需几行代码:

var
  serializer: IXmlSerializer;
  person: TPerson;
  xmlContent: string;
begin
  // 自行读取XML文件内容存入xmlContent变量
  serializer := TXmlSerializer.Create;
  person := serializer.Deserialize<TPerson>(xmlContent);
  // 直接使用person的字段即可,全程不需要手动释放任何对象
end;

方案2:mORMot 框架序列化模块

如果你可以接受引入成熟的第三方基础库,可以用mORMot的序列化核心模块,该模块支持单独拆分使用,不需要引入整个框架,支持record类型的XML/JSON双向序列化,经过大量生产环境验证,稳定性和性能都优于普通RTTI实现,也支持自定义映射规则。


内容的提问来源于stack exchange,提问作者Para

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 12:33:03