2013-06-05 41 views
1

我反序列化的XML和我使用這些類拼合XML進行反序列化

[DataContract(Name = "Validation")] 
public class FieldValidationModel 
{ 
    [DataMember] 
    public string Annotation { get; set; } 

    [DataMember] 
    public Collection<ValidationPlanType> PlanTypes { get; set; } 
} 

[DataContract(Name="PlanType")] 
public class ValidationPlanType 
{ 
    [DataMember] 
    public string Name { get; set; } 
} 

它的工作原理,但我非常希望只使用一個類

[DataContract(Name = "Validation")] 
public class FieldValidationModel 
{ 
    [DataMember] 
    public string Annotation { get; set; } 

    [DataMember] 
    public List<string> PlanTypes { get; set; } 
} 

我曾嘗試使用

[DataMember] 
[XmlArray, XmlArrayItem(Namespace="PlanType")] 
public List<string> PlanTypes { get; set; } 

沒有運氣,如果我能做到這一點的節點會從我現在已經使用

0被壓扁
<Validation> 
    <Annotation>TestAnnotation</Annotation> 
    <PlanTypes> 
    <PlanType> 
     <Name>PlanA</Name> 
    </PlanType> 
    <PlanType> 
     <Name>PlanB</Name> 
    </PlanType> 
    </PlanTypes> 
</Validation> 

到更具可讀性

<Validation> 
    <Annotation>TestAnnotation</Annotation> 
    <PlanTypes> 
    <PlanType>PlanA</PlanType> 
    <PlanType>PlanB</PlanType> 
    </PlanTypes> 
</Validation> 

感謝

+0

有點模糊你是什麼 – maxlego

+0

後很抱歉的是,我理解你並不清楚(不清楚模糊感)。我想要實現的是這個http://stackoverflow.com/questions/1208643/how-to-deserialize-into-a-liststring-using-the-xmlserializer-in-c-sharp爲我的PlanTypes – mitomed

+0

所以你想使用第二個模型,將創建第一個XML或反之亦然? – maxlego

回答

0

我還沒有嘗試過,但應該工作:

[DataContract(Name = "Validation")] 
public class FieldValidationModel 
{ 
     [DataMember] 
     public string Annotation { get; set; } 

     [DataMember] 
     public PlanTypeCollection PlanTypes { get; set; } 
} 

[CollectionDataContract(ItemName="PlanType")] 
public class PlanTypeCollection : Collection<string> {}