2016-03-25 2 views
0

boş listesine verir, liste ben oldum 0.De-serialising listeye XML ben bir liste halinde bir XML dosyası tefrika de çalışıyor ama neyse yapmam oldum

sayısı ile beraber biter Normalde yaptığım gibi Stack, her tür şeyi denedim, ama aklımın ucundayım. Burada neyin yanlış gidiyor?

Benim XML:

<?xml version="1.0" encoding="utf-8"?> 
<lijst> 
    <lijst_item> 
    <id>1</id> 
    <naam>NAME REDACTED</naam> 
    <archived>false</archived> 
    </lijst_item> 
    <lijst_item> 
    <id>2</id> 
    <naam>NAME REDACTED</naam> 
    <archived>false</archived> 
    </lijst_item> 
    <lijst_item> 
    <id>3</id> 
    <naam>NAME REDACTED</naam> 
    <archived>false</archived> 
    </lijst_item> 
</lijst> 

Lijst_item nesnesi:

[XmlType("Lijst_item")] 
public class Lijst_item 
{ 
    [XmlAttribute("id", DataType = "int")] 
    public int ID { get; set; } 

    [XmlElement("naam")] 
    public string Name { get; set; } 

    [XmlElement("archived", DataType ="boolean")] 
    public bool isArchived { get; set; } 

    public Lijst_item() 
    { 

    } 

    public Lijst_item(int id, string name, bool archived) 
    { 
     this.ID = id; 
     this.Name = name; 
     this.isArchived = archived; 
    } 
} 

Kod de kullanılan tefrika:

using (StreamReader sr = new StreamReader(sFile)) 
{ 
    XmlSerializer deserializer = new XmlSerializer(typeof(List<Lijst_item>), new XmlRootAttribute("lijst")); 
    var Test = (List<Lijst_item>)deserializer.Deserialize(sr); 
} 

Convert xml to List by Deserialize in c# bana yardım etmedi: Ben yanlış yapıyorum Tam olarak ne ? XML'im hatalı mı oluşturuldu? Benim neslim mi? Bir sebepten dolayı bir liste kullanamaz mıyım?

+0

Olası kopyası [Conver t xml'yi desterize ederek C#] 'yi listeler (http://stackoverflow.com/questions/5854641/convert-xml-to-list-by-deserialize-in-c-sharp) – Set

+0

Bunu da gördüm ama bana nasıl yardımcı olacağını anlayamadım. Biraz daha açıklayabilir misin bana? – Ian

cevap

0

bu deneyin ...

usings ...

using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Text; 
using System.Xml; 
using System.Xml.Serialization; 

Sınıflar ...

[XmlRoot(ElementName = "lijst_item")] 
    public class Lijst_item 
    { 
     [XmlElement(ElementName = "id")] 
     public string Id { get; set; } 
     [XmlElement(ElementName = "naam")] 
     public string Naam { get; set; } 
     [XmlElement(ElementName = "archived")] 
     public string Archived { get; set; } 
    } 

    [XmlRoot(ElementName = "lijst")] 
    public class Lijst 
    { 
     [XmlElement(ElementName = "lijst_item")] 
     public List<Lijst_item> Lijst_item { get; set; } 
    } 

Kodu ... (http://xmltocsharp.azurewebsites.net/ adresinden XML kullanarak oluşturulan)

 string strXML = @"<?xml version=""1.0"" encoding=""utf-8""?> 
          <lijst> 
           <lijst_item> 
            <id>1</id> 
            <naam>NAME REDACTED</naam> 
            <archived>false</archived> 
           </lijst_item> 
           <lijst_item> 
            <id>2</id> 
            <naam>NAME REDACTED</naam> 
            <archived>false</archived> 
           </lijst_item> 
           <lijst_item> 
            <id>3</id> 
            <naam>NAME REDACTED</naam> 
            <archived>false</archived> 
           </lijst_item> 
          </lijst>"; 

     byte[] bufXML = ASCIIEncoding.UTF8.GetBytes(strXML); 
     MemoryStream ms1 = new MemoryStream(bufXML); 

     // Deserialize to object 
     XmlSerializer serializer = new XmlSerializer(typeof(Lijst)); 
     try 
     { 
      using (XmlReader reader = new XmlTextReader(ms1)) 
      { 
       Lijst deserializedXML = (Lijst)serializer.Deserialize(reader); 

      }// put a break point here and mouse-over Label1Text and Label2Text …. 
     } 
     catch (Exception ex) 
     { 
      throw; 
     } 
+0

Teşekkür ederiz! Sonunda nasıl çalıştığını ve neyi yanlış yaptığımı anladım. Cevabınızı doğru cevap olarak işaretledim, ama nedense size bir artı 1 veremiyorum, bu yüzden bunu kabul etmeniz gerekecek. Cevabın hızı için teşekkürler! – Ian

+0

Ayrıca XML için C# bağlantısı için ayrı bir teşekkür, onu işaretledim, ÇOK faydalı görünüyor. – Ian