【问题标题】:Including arrary index in XML Serialization在 XML 序列化中包含数组索引
【发布时间】:2008-10-02 15:24:09
【问题描述】:

我有一个看起来像这样的课程

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>

其中索引属性等于数组中的项目位置。

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

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

【问题讨论】:

    标签: c# .net xml-serialization


    【解决方案1】:

    最好的方法是照你说的做,像这样向“SomeChildClass”添加一个属性

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

    然后,无论您将这些项目添加到数组中,请确保设置了此属性。然后当你序列化时...... Presto!

    【讨论】:

    • 我希望有一个更好的解决方案,但这很简单而且有效。
    • 小修正:[XmlAttribute("index")] ("index" 而不是"Item")
    • 呵呵..不错的收获。做出改变!
    • 你会如何反序列化这个来强制执行这个命令?
    【解决方案2】:

    您可能需要研究实现 System.Xml.Serialization.IXmlSerializable 来完成此操作。

    【讨论】:

      【解决方案3】:

      您可以检查 XmlAttributeOverrides 类。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-03
        • 1970-01-01
        • 1970-01-01
        • 2019-01-19
        • 1970-01-01
        相关资源
        最近更新 更多