如何序列化List

2024-03-24

我有A班。B班和C班是A班的一部分。

Class A 
{

//Few Properties of Class A

List<typeof(B)> list1 = new List<typeof(B)>()

List<typeof(C)> list2 = new List<typeof(C)>()

Nsystem NotSystem { get; set; } // Enum Property Type

}

public enum Nsystem {
    A = 0,
    B = 1,
    C = 2
}

我想序列化 A 类并用它生成 XML;我还想序列化 list1 和 list2 以及 Enum...

序列化此 XML 的好方法是什么,因为我需要将对象转换为 XML 以及将 XML 转换为对象的功能...

有哪些好的选择可以做到这一点? 谢谢


你可以使用XML序列化器 http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx:

var aSerializer = new XmlSerializer(typeof(A));
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
aSerializer.Serialize(sw, new A()); // pass an instance of A
string xmlResult = sw.GetStringBuilder().ToString();

为了使其正常工作,您还需要在您的类型上添加 xml 注释,以确保它使用正确的命名进行序列化,即:

public enum NSystem { A = 0, B = 1, C = 2 }

[Serializable]
[XmlRoot(ElementName = "A")]
Class A 
{
 //Few Properties of Class A
 [XmlArrayItem("ListOfB")]
 List<B> list1;

 [XmlArrayItem("ListOfC")]
 List<C> list2;

 NSystem NotSystem { get; set; } 
}

Edit:

Enum默认情况下,属性会被序列化,属性名称包含 XML 元素,其枚举值作为 XML 值,即,如果属性NotSystem在你的例子中有值C它将被序列化为

<NotSystem>C</NotSystem>

当然,您始终可以通过进行适当的注释来更改属性的序列化方式,即使用[XmlAttribute]所以它被序列化为属性,或者[XmlElement("Foobar")]所以它是使用序列化的Foobar作为元素名称。 MSDN 上提供了更广泛的文档,请查看上面的链接。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何序列化List? 的相关文章

随机推荐

  • document.getElementById 对于单标签 DIV 失败

    我的 HTML 页面上有 2 个 DIV div div div div 我有一个脚本可以访问网络服务并用数据填充它们 document getElementById divDebug innerHtml rawResult documen
  • 最低限度的文本清理

    在接受 存储 处理和显示 Unicode 文本的应用程序中 为了讨论的目的 我们假设它是一个 Web 应用程序 哪些字符应该always从传入文本中删除 我能想到一些 大部分列在C0 和 C1 控制代码维基百科文章 http en wiki
  • 从命令行执行Java

    我的桌面上有一个名为 Stuff 的文件夹 在该文件夹中我有以下内容 你好 java mail jar 而Hello java是从mail jar导入的 所以我需要告诉Hello java寻找mail jar 从 Windows 命令行和
  • 仅使用 Dockerfile 中的其他更改重建相同的 docker 映像

    我使用 Dockerfile 构建 Docker 映像 构建镜像后 我对 Dockerfile 进行了一些基本更改 是否可以仅通过额外的更改来重建相同的映像 由于创建图像需要很长时间 因此我不想完全构建它 提前致谢 所有 docker 构建
  • 设置私有 luarocks 存储库

    对于我的设置 我需要一个 luarocks rock 的私有存储库 我可以将它们安装在我的开发环境中 而无需连接到互联网 为 luarocks 设置远程存储库的步骤是什么 我可以使用 sftp 服务器吗 有人有过这样的经历吗 在深入研究这个
  • C++:类成员引用有效性?

    Class A A int foo m foo foo int m foo int main void A bar 0 int var 5 bar new A var std cout lt lt Is m foo still valid
  • Python中按多个条件排序

    我正在使用Python 3 8 我试图按分数对玩家进行排序 按降序排列 然后 只有当他们具有相同的分数时 才按排名排序 我已经读过排序方法 https docs python org 3 8 howto sorting html Pytho
  • 从其他服务器下载之前是否可以动态压缩文件?

    我想知道是否可以编写浏览器扩展或简单的 Java 脚本代码 其中包含指向不同位置的 URL 列表 可以将所有内容压缩在一起 我是说 例如 有 3 个不同的图像文件 http example1 com a png http example1
  • D3 在将 .data() 设置为附加元素时抛出“无法读取 null 的属性‘ownerDocument’”

    我收到此错误 未捕获的类型错误 无法读取 null 的属性 ownerDocument 这是来自设置的行 data 到最近附加的元素d3 const someSet someSelection filter some filter some
  • ios 延迟位置更新的问题

    过去两天我一直在尝试在应用程序中实现延迟位置更新 我面临的问题是 void locationManager CLLocationManager manager didUpdateLocations NSArray locations 即使在
  • 如何编写使用 Django 模块的独立 Python 脚本?

    在 PyCharm 中 我创建了一个空白的新 Django 应用程序 创建了一些模型并发布manage py makemigrations and manage py migrate 我尝试编写一个独立的脚本 用初始数据填充数据库 在其导入
  • keras mnist.load_data() 速度超慢,一段时间后会抛出错误

    这是我使用的完整代码 import os import numpy as np import matplotlib pyplot as plt from tqdm import tqdm from keras layers import I
  • 在 Windows 上更改 apache 的文档根不起作用

    我正在尝试更改本地 Windows 计算机上的 documentroot 以指向 htdocs 下面的子目录 我已经更改了 httpd conf 中的 DocumentRoot 位置以及目录位置 我已经重新启动了 Apache 但用 PHP
  • 为什么十六进制数会自动转换为十进制数?

    我正在开发一个Python小方法 它需要从另一个文件中读取代表键和值的字典 但我似乎遇到了我发送的数值表示的问题 例如 我的字典中的某些键如下所示 id dict val a 0x0000 val b 0x1000 但我注意到 当我尝试遍历
  • 如果目录不存在则创建

    我正在编写一个 PowerShell 脚本来创建多个目录 如果它们不存在 文件系统看起来与此类似 D D TopDirec SubDirec Project1 Revision1 Reports D TopDirec SubDirec Pr
  • @GenerateValue 和 @GenericGenerator 之间的区别

    有时我发现他们在一起 有时单独 其他时候他们似乎也做同样的事情 有什么不同 以下是三个例子 他们的做法有何不同 为什么我不能对所有这些都使用 GenerateValue 实施例1 Id GeneratedValue generator in
  • VueJS CKeditor5上传图片

    在 Vuejs 中使用 CKeditor5 上传图像时遇到问题 第一次尝试过简单上传适配器 https ckeditor com docs ckeditor5 latest features image upload simple uplo
  • Fluent NHibernate 主键约束命名约定

    有没有办法在 Fluent NHibernate 中为我的主键约束创建命名约定 我知道您可以命名外键约束 但似乎不可能命名主键约束 FNH 的 James Gregory 说 不 NHibernate 不支持这一点 因此我们也无法支持它 h
  • 有没有办法将自定义颜色存储在文件中并从 iOS 中的代码访问它们?

    我是一个 iOS 新手 但我有一些 Android 编程经验 我记得在 Android 中你可以在一个文件中定义一组自定义颜色颜色 xml您可以在代码中使用该文件 因此 每次必须在某处应用新颜色时 无需以编程方式定义新颜色 我的问题是 iO
  • 如何序列化List

    我有A班 B班和C班是A班的一部分 Class A Few Properties of Class A List