diff --git a/src/libraries/System.ServiceModel.Syndication/src/PACKAGE.md b/src/libraries/System.ServiceModel.Syndication/src/PACKAGE.md index 81fff57aba651..cde4a0fdb43dc 100644 --- a/src/libraries/System.ServiceModel.Syndication/src/PACKAGE.md +++ b/src/libraries/System.ServiceModel.Syndication/src/PACKAGE.md @@ -2,43 +2,124 @@ - +Provides types for generating and consuming RSS and Atom feeds. +It is used for creating and parsing syndication feeds, making it easier to build and integrate web content syndication. ## Key Features -* -* -* +* Easy generation and parsing of RSS and Atom feeds. +* Customizable for different syndication needs. +* Support for both feed reading and writing. ## How to Use +### Creating a Feed + +```csharp +using System.ServiceModel.Syndication; +using System.Xml; + +// Create a new syndication feed +SyndicationFeed feed = new SyndicationFeed( + "Feed Title", + "Feed Description", + new Uri("http://example.com"), + "FeedID", + DateTime.Now); + +// Add items to the feed +SyndicationItem item1 = new SyndicationItem( + "Title1", + "Content1", + new Uri("http://example.com/item1")); +feed.Items = new List { item1 }; + +// Serialize the feed to RSS format +using (XmlWriter writer = XmlWriter.Create("rss.xml")) +{ + Rss20FeedFormatter rssFormatter = new Rss20FeedFormatter(feed); + rssFormatter.WriteTo(writer); +} +``` + +Resulting RSS feed: + +```xml + + + + Feed Title + http://example.com/ + Feed Description + Sat, 11 Nov 2023 18:05:21 +0100 + FeedID + + http://example.com/item1 + Title1 + Content1 + + + +``` + +### Consuming a Feed + +```csharp +using System.ServiceModel.Syndication; +using System.Xml; + +string feedUrl = "https://devblogs.microsoft.com/dotnet/feed/"; +using XmlReader reader = XmlReader.Create(feedUrl); + +// Read the feed using Atom10FeedFormatter. +SyndicationFeed feed = SyndicationFeed.Load(reader); + +Console.WriteLine($"Feed Title: {feed.Title.Text}"); +Console.WriteLine("Feed Items:"); + +// Iterate through the feed items and display the title and a brief summary of each. +foreach (SyndicationItem item in feed.Items) +{ + Console.WriteLine($"Title: {item.Title.Text}"); + Console.WriteLine($"Published Date: {item.PublishDate.DateTime}"); +} + +/* + * This code produces the following output: + * + * Feed Title: .NET Blog + * Feed Items: + * - Title: Join us for the Great .NET 8 Hack + * Published Date: 07/11/2023 18:05:00 + * - Title: The convenience of System.IO + * Published Date: 06/11/2023 18:05:00 + */ +``` + ## Main Types The main types provided by this library are: -* `` -* `` -* `` +* `System.ServiceModel.Syndication.SyndicationFeed` +* `System.ServiceModel.Syndication.SyndicationItem` +* `System.ServiceModel.Syndication.Rss20FeedFormatter` +* `System.ServiceModel.Syndication.Atom10FeedFormatter` ## Additional Documentation -* [Conceptual documentation](https://learn.microsoft.com/dotnet/standard/serialization/**LIBRARYNAME**/overview) -* [API documentation](https://learn.microsoft.com/dotnet/api/**LIBRARYNAME**) - -## Related Packages - - +* [Conceptual documentation](https://learn.microsoft.com/dotnet/framework/wcf/feature-details/how-to-create-a-basic-rss-feed) +* [API documentation](https://learn.microsoft.com/dotnet/api/system.servicemodel.syndication) ## Feedback & Contributing -System.ServiceModel.Syndication is released as open source under the [MIT license](https://licenses.nuget.org/MIT). Bug reports and contributions are welcome at [the GitHub repository](https://github.com/dotnet/runtime). \ No newline at end of file +System.ServiceModel.Syndication is released as open source under the [MIT license](https://licenses.nuget.org/MIT). Bug reports and contributions are welcome at [the GitHub repository](https://github.com/dotnet/runtime).