ASP NET'te SQL Server'dan XML Site Haritası Oluşturma
Hakkında
İçerik Yönetim Sistemimizi tasarlama sürecinde, içeriğin arama motorlarının kullandığı çeşitli tarayıcılar tarafından hızla keşfedilmesini sağlamak için bir site haritası dosyasının eklenmesi gerektiğini biliyorduk.
Sistemimizin arkasında zaten bir veritabanı olduğundan, bariz seçim bu verileri kullanmak ve dosyayı dinamik olarak oluşturmaktı.
Sistemin çok sayıda sayfayı işleyebilmesi gerekiyordu, bu nedenle yerleşik fazlalık için daha sonra site haritalarına bağlanan bir site haritası dizin sayfası oluşturduk.
XML Sitemap Index
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https://www.claytabase.co.uk/sitemap.xml?Language=EN&Page=1</loc>
<lastmod>2019-07-17</lastmod>
</sitemap>
<sitemap>
<loc>https://www.claytabase.co.uk/sitemap.xml?Language=EN&Page=2</loc>
<lastmod>2019-07-17</lastmod>
</sitemap>
</sitemapindex>
XML Sitemap
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://www.claytabase.co.uk/</loc>
<lastmod>2013-12-13</lastmod>
<changefreq>monthly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>https://www.claytabase.co.uk/About-Us-Us-Us-Us-Us-Us-Us-Us-Us-Us-Us-Us-Us-Us-Us-Us-Us-Us-Us-Us-Us-Us-Us-Us-Us-Us-Us-Us-Us-Us-Us-Us-Us-Us-Us-Us-Us</loc>
<lastmod>2013-12-09</lastmod>
<changefreq>monthly</changefreq>
<priority>1</priority>
</url>
</urlset>
nasıl oluşturulur
Kod oluşturmayı okuma kolaylığı için iki sınıfa ayırdım, ancak isterseniz birleştirilebilir.
Nesil, sayfa yükleme olayına bağlanır, ancak oldukça basittir.
- Yanıt içerik türünü text/xml ve kodlamayı utf-8 olarak ayarlayın
- Bir XML Metin Yazıcısı oluşturun ve belgeyi yazmaya başlayın
- Web yapılandırma dosyasına kaydedilen bir bağlantı dizesini kullanarak bir SQL bağlantısı oluşturun
- Veritabanınızdan olası tüm değerleri alın ve bunları okumak için bir veri kümesine aktarın
- İlk öğeyi (sitemapindex veya urlset) yazın, bu standardın bir parçası olarak gereklidir ve şemayı ayarlayın
- Veri kümesinde bir döngü başlatın
- Gerekli öğeyi yazın (site haritası veya url)
- Her eleman için gerekli nitelikleri yazın
- Akışı temizleyin ve kapatın
Sitemap Index
Imports System.Data
Imports System.Data.SqlClient
Imports System.Xml
Partial Class Generate_SitemapIndex
Inherits System.Web.UI.Page
Dim conStr As String = ConfigurationManager.ConnectionStrings("MySqlConnection").ConnectionString
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Response.Clear()
Response.ContentType = "text/xml"
Response.Charset = "Utf-8"
Dim xtwFeed As XmlTextWriter = New XmlTextWriter(Response.OutputStream, Encoding.UTF8)
xtwFeed.WriteStartDocument()
Using con As New SqlConnection(conStr)
Dim com As New SqlCommand("SELECT {SitemapUrl},{SitemapModified} FROM {YourDatabase}", con)
Dim ds As New DataSet, da As New SqlDataAdapter(com)
con.Open()
da.Fill(ds)
xtwFeed.WriteStartElement("sitemapindex")
xtwFeed.WriteAttributeString("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9")
Dim dr = ds.Tables(0).CreateDataReader
While dr.Read
xtwFeed.WriteStartElement("sitemap")
xtwFeed.WriteElementString("loc", dr.Item(0).ToString) 'OR full URL from your database!
xtwFeed.WriteElementString("lastmod", dr.Item(1).ToString) 'ISO1806 format date.
xtwFeed.WriteEndElement()
End While
xtwFeed.WriteEndElement()
End Using
xtwFeed.WriteEndDocument()
xtwFeed.Flush()
xtwFeed.Close()
Response.End()
End Sub
End Class
Sitemap
Imports System.Data
Imports System.Data.SqlClient
Imports System.Xml
Partial Class Generate_Sitemap
Inherits System.Web.UI.Page
Dim conStr As String = ConfigurationManager.ConnectionStrings("MySqlConnection").ConnectionString
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Response.Clear()
Response.ContentType = "text/xml"
Response.Charset = "Utf-8"
Dim xtwFeed As XmlTextWriter = New XmlTextWriter(Response.OutputStream, Encoding.UTF8)
xtwFeed.WriteStartDocument()
Using con As New SqlConnection(conStr)
Dim com As New SqlCommand("SELECT {PageUrl},{PageModified},{PageChangeFreq},{PagePriority} FROM {YourDatabase}", con)
Dim ds As New DataSet, da As New SqlDataAdapter(com)
con.Open()
da.Fill(ds)
xtwFeed.WriteStartElement("urlset")
xtwFeed.WriteAttributeString("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9")
Dim dr = ds.Tables(0).CreateDataReader
While dr.Read
xtwFeed.WriteStartElement("url")
xtwFeed.WriteElementString("loc", dr.Item(0).ToString) 'full URL from your database!
xtwFeed.WriteElementString("lastmod", dr.Item(1).ToString) 'ISO1806 format date.
xtwFeed.WriteElementString("changefreq", dr.Item(2).ToString) 'daily, weekly, monthly etc
xtwFeed.WriteElementString("priority", dr.Item(3).ToString) 0.0 to 1.0
xtwFeed.WriteEndElement()
End While
xtwFeed.WriteEndElement()
End Using
xtwFeed.WriteEndDocument()
xtwFeed.Flush()
xtwFeed.Close()
Response.End()
End Sub
End Class
Claytabase tarafından web sitesi tasarımı
Bu, web sitesi tasarım hizmetlerimizin bir parçası olan piyasadaki en hızlı ve en optimize sistemlerden biri olan Ousia İçerik Yönetim Sistemi kodundan değiştirilmiş bir kod bölümüdür.