2014-04-02 60 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一樣。 –