【问题标题】:.NET XmlSerializer and multidimensional arrays.NET XmlSerializer 和多维数组
【发布时间】:2015-06-12 08:03:25
【问题描述】:

我正在实现一个程序,它充当某些现有软件的客户端。该协议是使用XML 模式定义的,它包括多维数组。

.net XmlSerializer 无法处理这些问题 - 这是一个已知问题

有没有办法扩展 XmlSerializer 以便我可以对此进行处理,或者是否有可以处理多维数组的 XmlSerializer 的完整(免费或商业)替代品?

SharpSerializer 似乎没有创建模式定义的 XML,而是使用它自己的序列化格式。

我想我可以使用sgen.exe 生成序列化程序代码,然后手动编辑它以添加必要的处理,但我想避免这种情况。

【问题讨论】:

  • 您可以向您的类添加一个属性,该属性为您提供数组字段的字符串。使用 XmlIgnore 忽略数组字段并使属性可序列化。

标签: c# .net xml xsd xmlserializer


【解决方案1】:

如果您可以控制更改架构,则可以尝试使用锯齿状数组而不是多维数组。

string[][] 而不是string[,]

或使用类似List<List<T>>

您可以创建自己的自定义类,它展平多维数组。

或者,在您的类上使用 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 */ }
}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2011-01-05
  • 1970-01-01
  • 2015-07-27
  • 2012-03-07
  • 2011-05-06
  • 2012-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多