2016-04-09 20 views
0

Bu benim ilk yazı burada ve hayal edebileceğiniz gibi ben sadece C# acemi. İşte soru şu: Belirli bir xml'i XmlSerializer ile özel bir sınıfa serpiştiriyorum.C# xml deserialization içinde ana düğümleri yok sayma

XML:

<epg> 
<program start="20160404234500" stop="20160405001000" channel="281479340566592"> 
    <eventid>604042345</eventid> 
    <titles> 
     <title>Schlauberger - Quizzen, was Spaß macht! (1)</title> 
    </titles> 
    <events> 
     <event>27. Schlauberger - Quizzen, was Spaß macht!</event> 
    </events> 
    <descriptions> 
     <description>27. Schlauberger - Quizzen, was Spaß macht!</description> 
    </descriptions> 
</program> 
<program start="20160504234500" stop="20160505001000" channel="281479340566587"> 
    <eventid>604042348</eventid> 
    <title>Schlauberger - Quizzen, was Spaß macht! (2)</title> 
    <event>28. Schlauberger - Quizzen, was Spaß macht!</event> 
    <description>28. Schlauberger - Quizzen, was Spaß macht!</description> 
</program> 

Custom C# sınıfı: Şimdiye kadar

public class Titles 
{ 
    [XmlElement("title")] 
    public string Title { get; set; } 
} 

public class SubTitles 
{ 
    [XmlElement("event")] 
    public string SubTitle { get; set; } 
} 

public class Descriptions 
{ 
    [XmlElement("description")] 
    public string Description { get; set; } 
} 

public class Program 
{ 
    [XmlElement("eventid")] 
    public string EventID { get; set; } 
    [XmlElement("titles")] 
    public Titles Titles { get; set; } 
    [XmlElement("events")] 
    public SubTitles SubTitles { get; set; } 
    [XmlElement("descriptions")] 
    public Descriptions Descriptions { get; set; } 
    [XmlAttribute("start")] 
    public string Start { get; set; } 
    [XmlAttribute("stop")] 
    public string Stop { get; set; } 
    [XmlAttribute("channel")] 
    public string Channel { get; set; } 
    [XmlElement("title")] 
    public string Title { get; set; } 
    [XmlElement("event")] 
    public string SubTitle { get; set; } 
    [XmlElement("description")] 
    public string Description { get; set; } 
} 

[XmlRoot(ElementName = "epg"), XmlType("epg")] 
public class epg 
{ 
    [XmlElement("program")] 
    public List<Program> Program { get; set; } 
} 

sorun yok. Ama görebildiğiniz gibi, "başlık", "olay" ve "açıklama" bazen bir çoğunlukta iç içe geçmiş ve bazen de değil, bazen daha sonraki kodumdaki özelliklere bazen bir liste ve bazen doğrudan erişebiliyorum. Bu, kodu gerçekten rahatsız edici hale getirir.
Çoğunlukla majörleri görmezden gelmek ve her zaman tek düğümleri kullanmak mümkün mü?

cevap

1

Sen .: senin Program sınıfa

public class Program 
    { 
     public Titles Titles { get; set; } 

     public string Title { get; set; } 

     public string GetTitle() 
     { 
      if (Titles != null) 
      { 
       return Titles.Title; 
      } 
      else 
      { 
       return Title; 
      } 
     } 

    } 
+0

Böyle basit bir çözüm düşündüm hiç örn bazı yardımcı fonksiyonları (veya özellikleri) ekleyebilirsiniz. Mükemmel çalışır. Teşekkür ederim! –

İlgili konular