डेटाबेस से अपनी वेबसाइट के लिए RSS फ़ीड बनाएं
क्लेटाबेस द्वारा वेबसाइट डिजाइन
इस पूर्वाभ्यास के माध्यम से चलाने में आपकी सहायता के लिए, कृपया हमारे परीक्षण वातावरण की स्थापना पर मार्गदर्शिका का पालन करें,
या अपनी आवश्यकताओं के अनुरूप कोड को अनुकूलित करें ।
अनुभव स्तर - इंटरमीडिएट
के बारे में
RSS एक मानकीकृत XML आधारित फ़ाइल है जो आपकी साइट पर किए गए अपडेट के बारे में जानकारी प्रदान करती है।
फिर इनका उपयोग विभिन्न समाचार एकत्रीकरण अनुप्रयोगों द्वारा किया जा सकता है जो बाहर जाते हैं और उपयोगकर्ताओं की विभिन्न पसंदीदा साइटों में परिवर्तनों की जांच करते हैं और उन्हें कुछ भी नया सूचित करते हैं।
वेब के विकास की प्रकृति के कारण, कुछ अलग प्रारूप हैं, जो नीचे एटम 2.0 में है।
Sample RSS File
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"> <channel> <atom:link href="https://hi.claytabase.com/" rel="self" type="application/rss+xml"/> <title/> <link/> <copyright>Copyright Claytabase 2012</copyright> <language/> <description/> <item> <title>Create an RSS Feed for your Website In ASP NET and SQL Server</title> <description>Easy way to create an RSS Feed for your Website in ASP.NET in VB.NET or C#.NET</description> <link>https://www.claytabase.co.uk/Academy/Learning-Web-Design/Using-ASP-NET/Create-an-RSS-Feed-for-your-Website-In-ASP-NET-and-SQL-Server</link> <pubDate>Wed, 15 Dec 2021 09:37:24 GMT</pubDate> <category>monthly</category> <guid>https://www.claytabase.co.uk/A7038527-90D0-4214-8C65-3A2BD831F141</guid> </item> <item> <title>CSS Styling for AJAX Accordion Control</title> <description>Some simple CSS styling rules for an AJAX Accordion Control</description> <link>https://www.claytabase.co.uk/Academy/Learning-Web-Design/Using-CSS/CSS-Styling-for-AJAX-Accordion-Control</link> <pubDate>Tue, 14 Dec 2021 07:00:00 GMT</pubDate> <category>monthly</category> <guid>https://www.claytabase.co.uk/0DB19797-5B3A-45F0-B3E6-2A8080DA60EE</guid> </item> </channel></rss>
USE ClaytabaseAcademyGOCREATE TABLE RSSPages(PageGUID UNIQUEIDENTIFIER CONSTRAINT DF_PageGUID DEFAULT NEWSEQUENTIALID() CONSTRAINT PK_PageGUID PRIMARY KEY,PageTitle NVARCHAR(200),PageDescription NVARCHAR(500),PageURL NVARCHAR(500),PageLanguage NVARCHAR(2),PageDate DATETIME,ChangeFrequency NVARCHAR(20))GOINSERT INTO RSSPages(PageTitle,PageDescription,PageURL,PageDate,PageLanguage,ChangeFrequency)SELECT 'Create an RSS Feed for your Website from a database','Walkthrough: Creating an RSS Feed for your Website in ASP.NET using VB.NET or C#.NET from an SQL Server database','https://www.claytabase.co.uk/Academy/Learning-Web-Design/Using-ASP-NET/Create-an-RSS-Feed-for-your-Website-In-ASP-NET-and-SQL-Server','2021-12-15 10:00:00','en','Weekly'INSERT INTO RSSPages(PageTitle,PageDescription,PageURL,PageDate,PageLanguage,ChangeFrequency)SELECT 'CSS Styling for AJAX Accordion Control','Some simple CSS styling rules for an AJAX Accordion Control','https://www.claytabase.co.uk/Academy/Learning-Web-Design/Using-CSS/CSS-Styling-for-AJAX-Accordion-Control',GETDATE(),'en','Monthly'INSERT INTO RSSPages(PageTitle,PageDescription,PageURL,PageDate,PageLanguage,ChangeFrequency)SELECT 'We''ll take the strain while you do what you are good at','A Multi-National team with over 20 years of experience specialising in Web, Database, Cloud services and bespoke Business Management Software','https://www.claytabase.co.uk/',GETDATE(),'en','Daily'INSERT INTO RSSPages(PageTitle,PageDescription,PageURL,PageDate,PageLanguage,ChangeFrequency)SELECT 'Wir nehmen Ihnen die Anstrengung, während Sie das tun, was Sie gut können','Ein multinationales Team mit über 20 Jahren Erfahrung, das sich auf Web-, Datenbank-, Cloud-Dienste und maßgeschneiderte Business-Management-Software spezialisiert hat','https://de.claytabase.com/',GETDATE(),'de','Daily'INSERT INTO RSSPages(PageTitle,PageDescription,PageURL,PageDate,PageLanguage,ChangeFrequency)SELECT 'Nos esforzaremos mientras haces lo que se te da bien','Un equipo multinacional con más de 20 años de experiencia especializado en Web, bases de datos, servicios en la nube y software de gestión empresarial a medida.','https://de.claytabase.com/',GETDATE(),'es','Daily'GOCREATE PROC GetRSSPages(@Language NVARCHAR(2)) AS BEGINSELECT * FROM RSSPagesWHERE PageLanguage=@LanguageENDGOEXEC GetRSSPages 'de'
विजुअल स्टूडियो में एक नया वेब फॉर्म जोड़ें
वीएस में, पेज फ़ोल्डर पर राइट क्लिक करके, जोड़ें और फिर वेब फॉर्म का चयन करके एक वेब फॉर्म जोड़ें।
अब हम पीछे के कोड में जाना चाहते हैं, इसलिए अपने नए पेज पर राइट क्लिक करें और व्यू कोड चुनें
कोड शायद इससे कहीं अधिक जटिल दिखता है, तो आइए देखें कि यह क्या करता है।
पहले हम SQL और XML के लिए नेमस्पेस इंपोर्ट करते हैं।
फिर डेटाबेस से कनेक्शन सेट हो जाता है, यह इसे इस उदाहरण में वेब कॉन्फ़िगरेशन से खींच रहा है।
VB
Imports System.Data.SqlClientImports System.XmlPublic Class RSS Inherits System.Web.UI.Page Dim con As New SqlConnection(ConfigurationManager.ConnectionStrings("SqlConnection").ConnectionString) Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim RSSLanguage As String = "en" Dim BaseURL As String = "https://www.claytabase.co.uk/" Dim MyTitle As String = "Academy Title" Dim MyDescr As String = "Academy Description"
'Clear any previous output from the buffer Response.ClearContent() Response.ContentType = "text/xml" Response.Charset = "Utf-8" Dim xtwFeed As XmlTextWriter = New XmlTextWriter(Response.OutputStream, Encoding.UTF8) xtwFeed.WriteStartDocument() 'The mandatory rss tag xtwFeed.WriteStartElement("rss") xtwFeed.WriteAttributeString("version", "2.0") xtwFeed.WriteAttributeString("xmlns:atom", "https://www.w3.org/2005/Atom") 'The channel tag contains RSS feed details xtwFeed.WriteStartElement("channel") xtwFeed.WriteRaw("<atom:link href="https://hi.claytabase.com/"" & BaseURL & RSSLanguage & "/rss"" rel=""self"" type=""application/rss+xml"" />") xtwFeed.WriteElementString("title", MyTitle) xtwFeed.WriteElementString("link", BaseURL) xtwFeed.WriteElementString("copyright", "Copyright Claytabase 2012") xtwFeed.WriteElementString("language", RSSLanguage) xtwFeed.WriteElementString("description", MyDescr)
'Objects needed for connecting to the SQL Using com As New SqlCommand("EXEC GetRSSPages '" + RSSLanguage + "'", con) If con.State = ConnectionState.Closed Then con.Open() Else End If Using dr = com.ExecuteReader() 'Loop through the content of the database and add them to the RSS feed While dr.Read() xtwFeed.WriteStartElement("item") xtwFeed.WriteElementString("title", dr.Item("PageTitle").ToString()) xtwFeed.WriteElementString("description", dr.Item("PageDescription").ToString()) xtwFeed.WriteElementString("link", dr.Item("PageURL").ToString()) xtwFeed.WriteElementString("pubDate", Format(dr.Item("PageDate"), "ddd, dd MMM yyyy hh:mm:ss") + " GMT") xtwFeed.WriteElementString("category", dr.Item("ChangeFrequency").ToString()) xtwFeed.WriteElementString("guid", BaseURL + "/" + dr.Item("PageGUID").ToString()) xtwFeed.WriteEndElement() End While End Using End Using 'Close all tags xtwFeed.WriteEndElement() xtwFeed.WriteEndElement() xtwFeed.WriteEndDocument() xtwFeed.Flush() xtwFeed.Close() Response.End() End SubEnd Class
C#
using System.Text;using Microsoft.VisualBasic;using System.Data.SqlClient;using System.Xml;public class RSS : System.Web.UI.Page{ private SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings("SqlConnection").ConnectionString); protected void Page_Load(object sender, System.EventArgs e) { string RSSLanguage = "en"; string BaseURL = "https://www.claytabase.co.uk/"; string MyTitle = "Academy Title"; string MyDescr = "Academy Description";
// Clear any previous output from the buffer System.Web.UI.Page.Response.ClearContent(); System.Web.UI.Page.Response.ContentType = "text/xml"; System.Web.UI.Page.Response.Charset = "Utf-8"; XmlTextWriter xtwFeed = new XmlTextWriter(System.Web.UI.Page.Response.OutputStream, Encoding.UTF8); xtwFeed.WriteStartDocument(); // The mandatory rss tag xtwFeed.WriteStartElement("rss"); xtwFeed.WriteAttributeString("version", "2.0"); xtwFeed.WriteAttributeString("xmlns:atom", "https://www.w3.org/2005/Atom"); // The channel tag contains RSS feed details xtwFeed.WriteStartElement("channel"); xtwFeed.WriteRaw("<atom:link href=\"" + BaseURL + RSSLanguage + "/rss\" rel=\"self\" type=\"application/rss+xml\" />"); xtwFeed.WriteElementString("title", MyTitle); xtwFeed.WriteElementString("link", BaseURL); xtwFeed.WriteElementString("copyright", "Copyright Claytabase 2012"); xtwFeed.WriteElementString("language", RSSLanguage); xtwFeed.WriteElementString("description", MyDescr);
// Objects needed for connecting to the SQL using (SqlCommand com = new SqlCommand("EXEC GetRSSPages '" + RSSLanguage + "'", con)) { if (con.State == ConnectionState.Closed) con.Open(); else { } using (var dr = com.ExecuteReader()) { // Loop through the content of the database and add them to the RSS feed while (dr.Read()) { xtwFeed.WriteStartElement("item"); xtwFeed.WriteElementString("title", dr.Item["PageTitle"].ToString()); xtwFeed.WriteElementString("description", dr.Item["PageDescription"].ToString()); xtwFeed.WriteElementString("link", dr.Item["PageURL"].ToString()); xtwFeed.WriteElementString("pubDate", Strings.Format(dr.Item["PageDate"], "ddd, dd MMM yyyy hh:mm:ss") + " GMT"); xtwFeed.WriteElementString("category", dr.Item["ChangeFrequency"].ToString()); xtwFeed.WriteElementString("guid", BaseURL + "/" + dr.Item["PageGUID"].ToString()); xtwFeed.WriteEndElement(); } } } // Close all tags xtwFeed.WriteEndElement(); xtwFeed.WriteEndElement(); xtwFeed.WriteEndDocument(); xtwFeed.Flush(); xtwFeed.Close(); System.Web.UI.Page.Response.End(); }}
ऊपर लपेटकर
पृष्ठ लोड से कोड पर, और यहां वह जगह है जहां यह थोड़ा और रचनात्मक रहा है।
हमारे सीएमएस में क्षेत्र RSSLanguage का उपयोग किया जाता है, जो सिस्टम को बताता है कि प्रत्येक अनुरोध के लिए कौन सी भाषा का उपयोग किया जा रहा है, और आधार URL भी पॉप्युलेट किया जाएगा, इस उदाहरण के लिए हमने उन्हें स्थिर फ़ील्ड बना दिया है।
कोड की अगली कुछ पंक्तियाँ एन्कोडिंग और प्रतिक्रिया प्रकार निर्धारित करती हैं, एक XML लेखक खोलें और कुछ आवश्यक शीर्षकों को सेट करें, क्योंकि ये शायद ही कभी बदलेंगे, मैंने इन्हें मैन्युअल रूप से सेट किया है।
अब हम डेटा को पढ़ने के लिए आगे बढ़ सकते हैं, इसलिए पहला काम एक SQL कमांड बनाना है, और इस मामले में हम केवल संग्रहीत प्रक्रिया को कॉल करते हैं जो भाषा इनपुट पर निर्भर डेटाबेस से आवश्यक फ़ील्ड लौटाती है।
फिर हम SQL कनेक्शन खोलते हैं, और डेटाबेस से परिणाम सेट के माध्यम से डेटा रीडर को लूप में घोषित करते हैं।
हम पहले से ही जानते हैं कि एक्सएमएल टैग प्रत्येक दस्तावेज़ के लिए आइटम है, इसलिए हम इसे सीधे खोल सकते हैं।
फिर प्रत्येक आवश्यक आइटम को डेटा के साथ पॉप्युलेट करें, और सुनिश्चित करें कि आपकी तिथि सही प्रारूप में है, फिर हम WriteEndElement का उपयोग करके टैग को बंद कर देंगे।
एक बार डेटा को पढ़ लेने के बाद, कोड डेटा रीडर, कनेक्शन को बंद कर रहा है और पहले खोले गए प्रत्येक तत्व के लिए अंत टैग लिख रहा है।
एक बार जब आप अपना लिख और प्रकाशित कर लेते हैं, तो इसे W3C RSS सत्यापनकर्ता पर जांचना सुनिश्चित करें।
क्लेटाबेस द्वारा वेबसाइट डिजाइन
यह कोड का एक भाग है जिसे Ousia सामग्री प्रबंधन प्रणाली कोड से संशोधित किया गया है, जो बाजार पर सबसे तेज और सबसे अनुकूलित प्रणालियों में से एक है, जो हमारी वेबसाइट डिजाइन सेवाओं का हिस्सा है।
ये लगभग £500 से शुरू होने वाली साइटों के साथ उपलब्ध हैं।