.NET XmlSerializer 和多维数组
.NET XmlSerializer and multidimensional arrays
我正在实施一个程序,该程序充当某些现有软件的客户端。该协议是使用 XML
模式定义的,它包括多维数组。
.net XmlSerializer
无法处理这些 - 这是一个已知问题。
有没有办法扩展 XmlSerializer
以便我可以对此进行处理,或者是否有 XmlSerializer
的完整(免费或商业)替代品可以处理多维数组?
SharpSerializer
似乎没有创建定义的模式 XML,而是使用它自己的序列化格式。
我想我可以使用 sgen.exe
生成序列化程序代码,然后手动编辑它以添加必要的处理,但我想避免这种情况。
如果您可以控制更改架构,则可以尝试使用 锯齿状数组 而不是多维数组。
string[][]
而不是 string[,]
或使用 List<List<T>>
您可以创建自己的自定义class,从而展平多维数组。
或者,在您的 class 上使用 XmlIgnore, 将多维数组展平 为标准数组(建议 here by Marc Gravell)
[XmlIgnore]
public int[, ,] Data { get; set; }
[XmlElement("Data"), Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
public int[] DataDto
{
get { /* flatten from Data */ }
set { /* expand into Data */ }
}
我正在实施一个程序,该程序充当某些现有软件的客户端。该协议是使用 XML
模式定义的,它包括多维数组。
.net XmlSerializer
无法处理这些 - 这是一个已知问题。
有没有办法扩展 XmlSerializer
以便我可以对此进行处理,或者是否有 XmlSerializer
的完整(免费或商业)替代品可以处理多维数组?
SharpSerializer
似乎没有创建定义的模式 XML,而是使用它自己的序列化格式。
我想我可以使用 sgen.exe
生成序列化程序代码,然后手动编辑它以添加必要的处理,但我想避免这种情况。
如果您可以控制更改架构,则可以尝试使用 锯齿状数组 而不是多维数组。
string[][]
而不是 string[,]
或使用 List<List<T>>
您可以创建自己的自定义class,从而展平多维数组。
或者,在您的 class 上使用 XmlIgnore, 将多维数组展平 为标准数组(建议 here by Marc Gravell)
[XmlIgnore]
public int[, ,] Data { get; set; }
[XmlElement("Data"), Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
public int[] DataDto
{
get { /* flatten from Data */ }
set { /* expand into Data */ }
}