代码之家  ›  专栏  ›  技术社区  ›  TonyB

在XML序列化中包含数组索引

  •  2
  • TonyB  · 技术社区  · 16 年前

    我有一个像这样的班

    public class SomeClass
    {
        public SomeChildClass[] childArray;
    }
    

    它将从XML序列化程序输出XML,如下所示:

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

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

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

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

    我可以使用“xmlattribute”属性向somechildclass添加一个索引属性,但是在序列化对象之前,我必须记住循环遍历数组并设置该值。

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

    3 回复  |  直到 15 年前
        1
  •  2
  •   Micah    16 年前

    最好的办法就是照你说的去做,在“某个儿童班”上加一个财产。

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

    然后,无论您如何将这些项添加到数组中,请确保已设置此属性get。然后当你连载…普雷斯托!

        2
  •  0
  •   Craig Eddy    16 年前

    您可能需要研究实现system.xml.serialization.ixmlserializable来完成这一点。

        3
  •  0
  •   Sunny Milenov    16 年前

    您可以检查xmltattributeoverrides类。