在XML序列化中包含arrary索引

时间:2020-03-06 15:02:01  来源:igfitidea点击:

我有一堂课,看起来像这样

public class SomeClass
{
    public SomeChildClass[] childArray;
}

它将从XMLSerializer输出XML,如下所示:

<SomeClass>
   <SomeChildClass>
      ...
   </SomeChildClass>
   <SomeChildClass>
      ...
   </SomeChildClass>
</SomeClass>

但我希望XML看起来像这样:

<SomeClass>
   <SomeChildClass index=1>
      ...
   </SomeChildClass>
   <SomeChildClass index=2>
      ...
   </SomeChildClass>
</SomeClass>

其中index属性等于数组中各项的位置。

我可以使用" XMLAttribute"属性将索引属性添加到SomeChildClass,但是随后我必须记住在序列化对象之前循环遍历数组并设置该值。

是否可以添加一些属性或者为我自动生成索引属性的其他方法?

解决方案

我们可能需要研究实现System.Xml.Serialization.IXmlSerializable才能完成此任务。

我们可以检查XmlAttributeOverrides类。

最好的方法是按照我们说的做,然后像这样将属性添加到" SomeChildClass"中

[XmlAttribute("Index")]
public int Order
{  { get; set; }   }

然后将这些项添加到数组中,请确保已设置此属性。然后当我们序列化时...。