Мой Kbyte.Ru
Рассылка Kbyte.Ru
Группы на Kbyte.Ru
Партнеры Kbyte.Ru
Реклама
Сделано руками
Сделано руками
> Исходные коды - Govardhana Reddy -

Visual Basic .NET - Работа с XML/XSL

Все примеры / Работа с XML/XSL

Конвертирование atom в rss

Автор: Govardhana Reddy | добавлено: 10.07.2010, 16:47 | просмотров: 1511 (1+) | комментариев: 0 | рейтинг: *x1
Функция конвертирования ATOM в RSS.

Код

Function AtomToRssConverter(ByVal atomDoc As XmlDocument) As XmlDocument
  Dim xmlDoc As XmlDocument = atomDoc
  Dim xmlNode As XmlNode = Nothing
  Dim mgr As New XmlNamespaceManager(xmlDoc.NameTable)
  mgr.AddNamespace("atom", "http://purl.org/atom/ns#")
  Const rssVersion As String = "2.0"
  Const rssLanguage As String = "en-US"
  Dim rssGenerator As String = "RDFFeedConverter"
  Dim memoryStream As New MemoryStream()
  Dim xmlWriter As New XmlTextWriter(memoryStream, Nothing)
  xmlWriter.Formatting = Formatting.Indented
  Dim feedTitle As String = ""
  Dim feedLink As String = ""
  Dim rssDescription As String = ""

  xmlNode = xmlDoc.SelectSingleNode("//atom:title", mgr)
  If xmlNode Is Nothing Then
     'This looks like an ATOM v1.0 format, rather than ATOM v0.3.
    mgr.RemoveNamespace("atom", "http://purl.org/atom/ns#")
    mgr.AddNamespace("atom", "http://www.w3.org/2005/Atom")
  End If

  xmlNode = xmlDoc.SelectSingleNode("//atom:title", mgr)
  If Not xmlNode Is Nothing Then
    feedTitle = xmlNode.InnerText
  End If
  xmlNode = xmlDoc.SelectNodes("//atom:link/@href", mgr)(2)
  If Not xmlNode Is Nothing Then
    feedLink = xmlNode.InnerText
  End If
  xmlNode = xmlDoc.SelectSingleNode("//atom:tagline", mgr)
  If Not xmlNode Is Nothing Then
    rssDescription = xmlNode.InnerText
  End If
  xmlNode = xmlDoc.SelectSingleNode("//atom:subtitle", mgr)
  If Not xmlNode Is Nothing Then
    rssDescription = xmlNode.InnerText
  End If

  xmlWriter.WriteStartElement("rss")
  xmlWriter.WriteAttributeString("version", rssVersion)
  xmlWriter.WriteStartElement("channel")
  xmlWriter.WriteElementString("title", feedTitle)
  xmlWriter.WriteElementString("link", feedLink)
  xmlWriter.WriteElementString("description", rssDescription)
  xmlWriter.WriteElementString("language", rssLanguage)
  xmlWriter.WriteElementString("generator", rssGenerator)
  Dim items As XmlNodeList = xmlDoc.SelectNodes("//atom:entry", mgr)
  If items Is Nothing Then
    Throw New FormatException("Atom feed is not in expected format. ")
  Else
    Dim title As String = [String].Empty
    Dim link As String = [String].Empty
    Dim description As String = [String].Empty
    Dim author As String = [String].Empty
    Dim pubDate As String = [String].Empty
    For i As Integer = 0 To items.Count - 1
      Dim nodTitle As XmlNode = items(i)
      xmlNode = nodTitle.SelectSingleNode("atom:title", mgr)
      If Not xmlNode Is Nothing Then
        title = xmlNode.InnerText
      End If
      Try
        link = items(i).SelectSingleNode("atom:link[@rel= alternate ]", mgr).Attributes("href").InnerText
      Catch ex As Exception
        link = items(i).SelectSingleNode("atom:link", mgr).Attributes("href").InnerText
      End Try
      xmlNode = items(i).SelectSingleNode("atom:content", mgr)
      If Not xmlNode Is Nothing Then
        description = xmlNode.InnerText
      End If
      xmlNode = items(i).SelectSingleNode("//atom:name", mgr)
      If Not xmlNode Is Nothing Then
        author = xmlNode.InnerText
      End If
      xmlNode = items(i).SelectSingleNode("atom:issued", mgr)
      If Not xmlNode Is Nothing Then
        pubDate = xmlNode.InnerText
      End If
      xmlNode = items(i).SelectSingleNode("atom:updated", mgr)
      If Not xmlNode Is Nothing Then
        pubDate = xmlNode.InnerText
      End If
      xmlWriter.WriteStartElement("item")
      xmlWriter.WriteElementString("title", title)
      xmlWriter.WriteElementString("link", link)
      If pubDate.Length < 1 Then
        pubDate = Date.MinValue.ToString()
      End If
      xmlWriter.WriteElementString("pubDate", Convert.ToDateTime(pubDate).ToUniversalTime().ToString("ddd, dd MMM yyyy HH:mm:ss G\MT"))
      xmlWriter.WriteElementString("author", author)
      xmlWriter.WriteElementString("description", description)
      xmlWriter.WriteEndElement()
    Next
    xmlWriter.WriteEndElement()
    xmlWriter.Flush()
    xmlWriter.Close()
  End If
  Dim retDoc As New XmlDocument()
  Dim outStr As String = Encoding.UTF8.GetString(memoryStream.ToArray())
  retDoc.LoadXml(outStr)
  Return retDoc
End Function
Об авторе

Govardhana Reddy

Нет информации об авторе...
Govardhana Reddy
Последние комментарии (всего: 0)

Добавлять комментарии могут только зарегистрированные пользователи сайта.
Если у Вас уже есть учетная запись на Kbyte.Ru, пройдите процедуру авторизации OpenID.
Если Вы еще не зарегистрированы на Kbyte.Ru - зарегистрируйтесь.


Нет комментариев...

Авторизация
 
OpenID
Зарегистрируйся и получи 10% скидку на добавление своего сайта в каталоги! Подробнее »
Поиск по сайту
Люди на Kbyte.Ru
Реклама
Счетчики