2013-08-01 43 views
0

我剛開始使用xml序列化,我嘗試了這些:xml使用非常簡單的文件進行反序列化

(1)反序列化時拋出異常。 (2)也會引發異常 (3)不工作,因爲它應該的。

任何想法非常讚賞。提前致謝。

1) const string XML = @"<?xml version=""1.0""?> 
        <DietPlan> 
          <Fruit>fig</Fruit> 
          <Veggie>Carrot</Veggie> 
        </DietPlan>"; 

    [XmlRoot(ElementName = "DietPlan")] 
    public class TestData 
    { 
     [XmlElement("Fruit")] 
     public XmlElement Fruits { get; set; } 

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

    } 



2) const string XML = @"<?xml version=""1.0""?> 
        <DietPlan> 
          <Fruit>fig</Fruit> 
          <Fruit>fig</Fruit> 
          <Veggie>Carrot</Veggie> 
          <Veggie>Carrot</Veggie> 
        </DietPlan>"; 

    [XmlRoot(ElementName = "DietPlan")] 
    public class TestData 
    { 
     [XmlElement("Fruit")] 
     public List<XmlElement> Fruits { get; set; } 

     [XmlElement("Veggie")] 
     public List<XmlElement> test { get; set; } 

    } 


3) const string XML = @"<?xml version=""1.0""?> 
        <DietPlan> 
         <Data> 
          <Fruit>fig</Fruit> 
          <Fruit>fig</Fruit> 
          <Veggie>Carrot</Veggie> 
          <Veggie>Carrot</Veggie> 
         </Data> 
        </DietPlan>"; 

    [XmlRoot(ElementName = "DietPlan")] 
    public class TestData 
    { 
     public Datas Datas { get; set; } 

    } 

public class Datas 
{ 
    [XmlElement("Fruit")] 
    public List<XmlElement> Fruits { get; set; } 

    [XmlElement("Veggie")] 
    public List<XmlElement> test { get; set; } 
} 

1)xml文件在我的上下文中是有效的! (雖然格式不正確)

2)這是我用來反序列化的代碼!

public static void Deserialize() 
    { 
     var ms = new MemoryStream(Encoding.UTF8.GetBytes(XML)); 
     var xs = new XmlSerializer(typeof(TestData)); 
     var obj = (TestData)xs.Deserialize(ms); 

    } 

編輯:(3)已經將這裏的答案enter link description here

回答

0

如果你不需要你的類成員爲類型的XMLElement,使用字符串代替:

[XmlRoot(ElementName = "DietPlan")] 
public class TestData 
{ 
    [XmlElement("Fruit")] 
    public string Fruits { get; set; } 

    [XmlElement("Veggie")] 
    public string test { get; set; } 

} 
相關問題