将xml不同的元素序列化为c#中的几个属性

tbi*_*icr 6 c# xml deserialization

我有下一个xml:

<table-display-fields>
  <field name="NAME/>
  <field name="DESCRIPTION" />
</table-display-fields>
Run Code Online (Sandbox Code Playgroud)

我用下一个代码实现了这一点:

[XmlArray("table-display-fields")]
[XmlArrayItem("field")]
public TableDisplayField[] TableDisplayFields;
Run Code Online (Sandbox Code Playgroud)

然后我将新的xml元素添加到table-display-fields节点:

<table-display-fields>
  <record-number-field name="ID" />
  <field name="NAME/>
  <field name="DESCRIPTION" />
</table-display-fields>
Run Code Online (Sandbox Code Playgroud)

然后添加下一个代码来deserealize record-number-field:

[XmlArray("table-display-fields")]
[XmlArrayItem("record-number-field")]
public TableDisplayField[] RecordTableDisplayFields;

[XmlArray("table-display-fields")]
[XmlArrayItem("field")]
public TableDisplayField[] TableDisplayFields;
Run Code Online (Sandbox Code Playgroud)

这不起作用.如何解除新的xml,并保存现有的属性路径?

Ser*_*ier 1

您必须删除 XmlArrayItem() 属性。

[XmlArray("table-display-fields")] 
public object[] TableDisplayItems;
Run Code Online (Sandbox Code Playgroud)

中的每个对象TableDisplayItems都是 afield或 a record-number-field

当然,如果您record-number-field的阵列顶部只有一个,那么解决方案可能会好得多。是这样吗?