2012-02-17 6 views
4

これはまったくわかりません。毎日の入力データを別の著者の列に分けて記述するためのグリッドビューを含むビルトインページがあり、Excelファイルのようです。下にAtomリンクがあります。Atom xml C#で読み取る

投稿者のリンクをクリックすると、投稿者のプロパティページに移動し、名前、現在の作業内容、彼の書いた本数(50/70 80%はステータスなどと呼ばれています)、この情報をどのように読み込んで、関連するアプリケーションの別のビューで表示できるのでしょうか。私はフィードのURLだけを知っている、私は本当にどのように行うことができないのか分からない。何か助けてくれてありがとう。

+0

私は実際に、私はまだ完全にそれのまわりで私の頭をラップしていない、あまりにも悪い、今日この上で作業になります。私は、XMLを消費してオブジェクトとして提供するDataContracttoを使用することを知っています。 –

+0

http://msdn.microsoft.com/en-us/library/system.servicemodel.syndication.syndicationfeed.aspx – SLaks

+0

http://stackoverflow.com/questions/9329067/reading-wordpress-rss-with-c-sharp -content-different/ –

答えて

2

DataContractSerializerを特殊なXML形式で使用しようとはしていませんが、XmlSerializerでは、属性と要素を設定できます。素敵なオブジェクトモデルを作成し、それを使ってXMLを読むことができるので、私が心配する限り最も簡単な方法です。原子フィードを読み取る例は、PARTIALです。 XMLを取得するにはHttpWebRequestを実行してから、XmlSerializerを使用してフィードを逆シリアル化する必要があります。

class Program 
{ 
    static void Main(string[] args) 
    { 
     Feed feed = new Feed(); 
     feed.Title = "Exmple Feed"; 
     feed.Updated = DateTime.Now; 
     feed.Link = new Link { Href = "http://example.org/" }; 

     feed.Entries.Add(
     new Entry 
     { 
      Title = "Atom-Powered Robots Run Amok", 
      Link = new Link { Href = "http://example.org/2003/12/13/atom03" }, 
      Updated = DateTime.Now, 
      Summary = "Some text." 
     }); 

     XmlSerializer serializer = new XmlSerializer(typeof(Feed), "http://www.w3.org/2005/Atom"); 

     using (StreamWriter sw = new StreamWriter("c:\\testatom.xml")) 
     { 
      serializer.Serialize(sw, feed); 
     } 

     using (StreamReader sr = new StreamReader("c:\\testatom.xml")) 
     { 
      Feed readFeed = serializer.Deserialize(sr) as Feed; 
     } 
    } 
} 
+0

これは美しいです! :-) –

+0

これはSystem.ServiceModel.Syndicationよりもはるかに良いです –

0

最良の出発点は、Atom 1.0とRSS 2.0標準にマップSyndicationFeedを、使用することを次のようになります。ここでは

[XmlType(TypeName = "feed", Namespace = "http://www.w3.org/2005/Atom")] 
public class Feed 
{ 
    [XmlElement(ElementName = "title")] 
    public string Title { get; set; } 

    [XmlElement(ElementName = "updated")] 
    public DateTime? Updated { get; set; } 

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

    [XmlElement(ElementName = "link")] 
    public Link Link { get; set; } 

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

    public Feed() 
    { 
     Entries = new List<Entry>(); 
    } 
} 

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

    [XmlElement(ElementName = "updated")] 
    public DateTime? Updated { get; set; } 

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

    [XmlElement(ElementName = "link")] 
    public Link Link { get; set; } 

    [XmlElement(ElementName = "summary")] 
    public string Summary { get; set; } 
} 

public class Link 
{ 
    [XmlAttribute(AttributeName = "href")] 
    public string Href { get; set; } 
} 

は、フィードを読む/書くために働いサンプルです。あなたが基本的な実装のために必要なすべてはあなたに利用可能であるべきである:おそらく

XmlReader reader = XmlReader.Create("http://localhost/feeds/serializedFeed.xml"); 
SyndicationFeed feed = SyndicationFeed.Load(reader); 

// Feed title 
Console.WriteLine(feed.Title.Text); 

foreach(var item in feed.Items) 
{ 
    // Each item 
    Console.WriteLine("Title: {0}", item.Title.Text); 
    Console.WriteLine("Summary: {0}", ((TextSyndicationContent)item.Summary).Text); 
} 

あなたはいくつかのカスタム要件を持っている、または異なったRSSデータを処理するために、この規格よりも、その後、ダグの答えは、進むべき道だろうしたい場合。


便利な参照:

関連する問題