2014-04-02 62 views
0

我正在整理de /序列化之前用来保存我的xml数据的类。派生类中的XML序列化

我想获得的就是这种

<CalculationInputs> 
    <Key Name="Keyname" Value="keyname" /> 
    <Input Name="InputName" Value="InputValue" /> 
    <Input Name="InputName2" Value="InputValue2" /> 
</CalculationInputs> 

我目前的实施涉及具有“输入”和一个键的类型,例如列表的“CalculationInputs”类

[XmlRoot("CalculationInputs")] 
public class CalculationInputs 
{ 
... 

[XmlElement("Key")] 
public Key Key { get; set; } 

// InputList 
[XmlElement("Input")] 
public List<Input> InputList { get; set; } 

... 

} 

不过,我想通过列表CalculationInputs类像这样流线这个

[XmlRoot("CalculationInputs")] 
     public class CalculationInputs: List<Input> 
     { 
      [XmlElement("Key")] 
      public Key Key { get; set; } 
... 
} 

可悲的是它只有50%的作品。扩展名单desearilizes罚款..但'关键'元素被忽略,我得到这

<CalculationInputs> 
    <Input Name="InputName" Value="InputValue" /> 
    <Input Name="InputName2" Value="InputValue2" /> 
</CalculationInputs> 

任何人有任何指针?

另外,对于加分 - 反序列化时,我可以有很多重要的标签,它使用第一,忽略其余部分即

<Key Name="Keyname" Value="keyname" /> 
    <Key Name="Keyname2" Value="keyname2" /> 

而对于我deserialing当它会更好,如果一个异常被抛出这作为密钥不是一个列表。

谢谢。

回答

0

C#

[XmlRoot("CalculationInputs")] 
    public class CalculationInputs 
    { 

    [XmlElement("Key")] 
    public Key Key { get; set; } 

    // InputList 
    [XmlArray("array")] 
    [XmlArrayItem("Input")] 
    public List<Input> Input { get; set; } 
    } 
    public class Key 
    { 
     [XmlAttribute("Name")] 
     public string Name { get; set; } 
     [XmlAttribute("Value")] 
     public string Value { get; set; } 
    } 
    public class Input 
    { 
     [XmlAttribute] 
     public string Name { get; set; } 
     [XmlAttribute] 
     public string Value { get; set; } 
    } 

并改变你的XML像下面

<CalculationInputs> 
    <Key Name="Keyname" Value="keyname" /> 
    <array> 
    <Input Name="InputName" Value="InputValue" /> 
    <Input Name="InputName2" Value="InputValue2" /> 
    </array> 
</CalculationInputs> 
+0

这不是明摆着如何帮助?您不使用派生类,事实上,建议的类更复杂,我想要替换的类 - 就像输出的xml一样。 –