代码之家  ›  专栏  ›  技术社区  ›  David Morton

XML反序列化和松散数组项

  •  3
  • David Morton  · 技术社区  · 17 年前

    <Root>
       <ArrayType1 Name="Bob"/>
       <ArrayType1 Name="Jim"/>
       <ArrayType2 Name="Frank">
          <SubItem Value="4"/>
       </ArrayType2>
       <ArrayType2 Name="Jimbo">
          <SubItem Value="2"/>
       </ArrayType2>
    </Root>
    

    现在我想创建一个具有这三种类型的类,Root、ArrayType1和ArrayType2,但我想在Root中得到两个列表,一个包含ArrayType1项的集合,另一个包含ArrayType2项的集合,但是这些项似乎需要某种根,例如,我知道如何反序列化以下内容:

    <Root>
       <ArrayType1Collection>
          <ArrayType1 Name="Bob"/>
          <ArrayType1 Name="Jim"/>
       </ArrayType1Collection>
       <ArrayType2Collection>
          <ArrayType2 Name="Frank">
             <SubItem Value="4"/>
          </ArrayType2>
          <ArrayType2 Name="Jimbo">
             <SubItem Value="2"/>
          </ArrayType2>
       </ArrayType2Collection>
    </Root>
    

    XML序列化程序会允许这样做吗?

    1 回复  |  直到 17 年前
        1
  •  11
  •   Marc Gravell    17 年前

    这不只是:

    [Serializable]
    public class Root {
        [XmlElement("ArrayType1")]
        public List<ArrayType1> ArrayType1 {get;set;}
    
        [XmlElement("ArrayType2")]
        public List<ArrayType2> ArrayType2 {get;set;}
    }
    

    ?

    或者,只需将xml放入文件(“foo.xml”)并使用:

    xsd foo.xml
    xsd foo.xsd /classes
    

    看看生成的foo.cs