2017-05-06 22 views
0

IDのようなフィードから単純な情報をバインドできますが、複雑なオブジェクトを解析しても常にnullに終わってしまいます。私のマッピングで何が間違っていますか?複雑なオブジェクトにxmlをデシリアライズ

フィード

[XmlRoot("feed", Namespace = "http://www.w3.org/2005/Atom")] 
public class Feed 
{ 
    [XmlElement("author")] 
    Author Author { get; set; } 

    [XmlElement("entry")] 
    List<Entry> Entries { get; set; } 

    [XmlElement("id")] 
    public string Id { get; set; } 
} 

[XmlType("author")] 
public class Author 
{ 
    [XmlElement("name")] 
    public string Name { get; set; } 
    [XmlElement("email")] 
    public string Email { get; set; } 
} 

エントリ

[XmlType("entry")] 
public class Entry 
{ 
    [XmlElement("id")] 
    public string Id { get; set; } 
    [XmlElement("published")] 
    DateTime Published { get; set; } 
    [XmlElement("updated")] 
    DateTime Updated { get; set; } 
    [XmlElement("title")] 
    public string Title { get; set; } 
} 

デシリアライズ

 using (Stream stream = res.GetResponseStream()) 
     { 
      XmlSerializer serializer = new XmlSerializer(typeof(Feed)); 
      feed = (Feed)serializer.Deserialize(stream); 
     } 
+1

入力XMLを表示します。 –

+2

[シンジケーションネームスペース](https://msdn.microsoft.com/en-us/library/system.servicemodel.syndication(v = vs.110).aspx)を参照してください。 RSSを操作するには、[SyndicationFeed Class](https://msdn.microsoft.com/en-us/library/system.servicemodel.syndication.syndicationfeed(v = vs.110).aspx)を使用します。 –

+0

プロジェクトは.netコアを使用していますが、入力xmlは のようなブログスポットの原子フィードです。http://cellularscale.blogspot.com/feeds/posts/default – Evr

答えて

1

"フィード"クラス定義ビットが疑わしい。

以下の方法で試してみてください。

  1. "Author"クラスとListクラスpublicを宣言してください。
  2. 以下のコードに示すように、コンストラクターでAuthorとListを作成してみてください。

    [XmlRoot("feed", Namespace = "http://www.w3.org/2005/Atom")] 
    public class Feed 
    { 
         //ADD A CONSTRUCTOR AND CREATE LIST AND AUTHOR 
         public Feed() 
         { 
         Author1 = new Author(); 
         Entries = new List<Entry>(); 
    
         } 
    
         [XmlElement("author")] 
         public Author Author1 { get; set; } 
    
         [XmlElement("entry")] 
         public List<Entry> Entries { get; set; } 
    
         [XmlElement("id")] 
         public string Id { get; set; } 
    } 
    
+0

Argh! FeedのAuthorとEntriesにパブリックを追加すると、問題が修正されました。ありがとうございました – Evr

関連する問題