我不知道這一點,我有內置的頁面,其中包含一個gridview來描述日常輸入數據分成不同作者的列,它看起來像一個excel文件。底部有一個Atom鏈接。Atom xml使用C#讀取
如果我點擊一行的鏈接,尤其是帖子的作者,我將被引導到作者的屬性頁面,其中將會有名稱,當前完成的工作以及他寫了多少書(50/70 80%被稱爲狀態等),我想知道如何讀取這些信息並以相關應用程序的另一個視圖顯示它;那是我只知道提要的URL,我真的不知道如何做到這一點。感謝您的任何幫助。
我不知道這一點,我有內置的頁面,其中包含一個gridview來描述日常輸入數據分成不同作者的列,它看起來像一個excel文件。底部有一個Atom鏈接。Atom xml使用C#讀取
如果我點擊一行的鏈接,尤其是帖子的作者,我將被引導到作者的屬性頁面,其中將會有名稱,當前完成的工作以及他寫了多少書(50/70 80%被稱爲狀態等),我想知道如何讀取這些信息並以相關應用程序的另一個視圖顯示它;那是我只知道提要的URL,我真的不知道如何做到這一點。感謝您的任何幫助。
我還沒有嘗試過使用DataContractSerializer和專門的XML格式,但是XmlSerializer可以讓你設置什麼是屬性和什麼是元素。就我而言,這是最簡單的方法,因爲您可以創建一個很好的對象模型並使用它來讀取任何XML。這是一個讀取原子進給的示例。您將需要執行HttpWebRequest來獲取XML(這非常簡單),然後使用XmlSerializer來反序列化Feed。
[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; }
}
這裏是寫入/讀出的進料工作樣品:
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;
}
}
}
這很美! :-) – 2012-07-16 01:49:40
imo這比System.ServiceModel.Syndication好多了 – 2012-09-28 02:26:26
最好起點是使用SyndicationFeed
,它映射到Atom 1.0和RSS 2.0標準。你需要一個基本的實現都應該提供給您:
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數據不同於此標準,那麼道格的答案會是要走的路。
有用的參考資料:
我其實今天這個上工作,可惜我沒有包裹着我周圍的頭完全尚未。我知道我將使用DataContract來使用XML並將其作爲對象提供。 – 2012-02-17 17:25:01
http://msdn.microsoft.com/en-us/library/system.servicemodel.syndication.syndicationfeed.aspx – SLaks 2012-02-17 17:26:20
http://stackoverflow.com/questions/9329067/reading-wordpress-rss-with-c-sharp -content-different/ – 2012-02-17 17:28:04