2016-04-09 20 views
0

これは私の最初の投稿です。想像することができますが、私はC#の初心者です。だから私の質問です: 私は与えられたXMLをXmlSerializerでカスタムクラスにデシリアライズしています。C#はxmlの逆シリアル化で親ノードを無視します

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> 

カスタムC#クラス:これまで

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; } 
} 

問題ありません。しかし、あなたが見ることができるように、 "title"、 "event"、 "description"はたいていの場合ネストされていることがあります。これはコードを本当に不便にします。
大多数を無視して、常に代わりに単一のノードを使用するのはどういうことですか?

答えて

1

あなたは例えば、あなたのProgramクラスにいくつかのヘルパー関数(またはプロパティ)を追加することができます。:

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

を、私は、このような簡単な解決策を考えたことがありません。完璧に動作します。ありがとうございました! –

関連する問題