Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: LeandroA en 8 Junio 2011, 21:07 PM

Título: Problemas para leer un RSS (Microsoft.XMLDOM)
Publicado por: LeandroA en 8 Junio 2011, 21:07 PM
Hola tengo problemas para leer un rss, estoy usando Microsoft.XMLDOM, el problema es cuando trato de leer el documento ("Load"), lo que es extraño para mí es que con Firefox o Internet Explorer se muestra correctamente.

el problema es con este rss http://www.taringa.net/rss/home/ultimos-posts/

al parecer es por la primera linea <?xml version="1.0" encoding="UTF-8"?>
si yo descargo el documento en disco y pongo
<?xml version="1.0" encoding="ISO-8859-1"?>
lee el documento correctamente.

Option Explicit
'Private Doc As DOMDocument
Private Doc As Object

Private Sub Form_Load()
   Dim sURL As String
   
   'This fail
   sURL = "http://www.taringa.net/rss/home/ultimos-posts/"
   
   'This ok if Doc.validateOnParse = False
   'sURL = "http://ezrss.it/feed/"
   
   
   'This ok
   'sURL = "http://d.yimg.com/ar.rss.news.yahoo.com/rss/insolitas"
   
   'Set Doc = New DOMDocument
   Set Doc = CreateObject("Msxml2.DOMDocument.3.0") 'or "Microsoft.XMLDOM"
   
   Doc.resolveExternals = False
   Doc.async = False
   Doc.validateOnParse = False


   If Doc.Load(sURL) Then
       Debug.Print Doc.xml
   Else
       Debug.Print Doc.parseError
   End If
End Sub

Título: Re: Problemas para leer un RSS (Microsoft.XMLDOM)
Publicado por: raul338 en 8 Junio 2011, 22:41 PM
Parece que tendrás que descargarlo y leerlo con LoadXML, aunque si tiene caracteres "raros" los tomará como "?"

Código (vb) [Seleccionar]
Option Explicit
'Private Doc As DOMDocument
Private Doc As Object

Private Sub Form_Load()
   'Set Doc = New DOMDocument
   Set Doc = CreateObject("Msxml2.DOMDocument.3.0") 'or "Microsoft.XMLDOM"
   
   Doc.resolveExternals = False
   Doc.async = False
   Doc.validateOnParse = False
   
   ' ChrW$(8364) = Simbolo del euro €
   ' ChrW$(&H8FCE) = Simbolo de Asia del este
   
   If Doc.LoadXML("<?xml version=""1.0"" encoding=""UTF-8""?><symbol>" & ChrW$(8364) & ChrW$(&H8FCE) & "</symbol>") Then
       Debug.Print Doc.xml
   Else
       Debug.Print Doc.parseError
   End If
End Sub


Resultado
Código (xml) [Seleccionar]
<?xml version="1.0"?>
<symbol>€?</symbol>
Título: Re: Problemas para leer un RSS (Microsoft.XMLDOM)
Publicado por: LeandroA en 9 Junio 2011, 03:37 AM
Buenisimo raul, parece que funciona bien, por lo de los signos raros no importa lo ago la combercion de UTF-8 a unicode.

Saludos y muchas gracias
Título: Re: Problemas para leer un RSS (Microsoft.XMLDOM)
Publicado por: seba123neo en 9 Junio 2011, 04:28 AM
Hola, leandro con ese link del rss de taringa no funciona efectivamente, pero probe con otro que es lo mismo y funciona bien.

en vez de http://www.taringa.net/rss/home/ultimos-posts/


usar esta http://rss.taringa.net/taringa/ultimos-post

Código (vb) [Seleccionar]
Option Explicit

Dim Doc As DOMDocument

Private Sub Form_Load()
   
   Set Doc = New DOMDocument
   Doc.resolveExternals = True
   Doc.async = False

   If Doc.Load("http://rss.taringa.net/taringa/ultimos-post") Then
       MsgBox Doc.selectNodes("/rss/channel/item").length
       MsgBox GetElement("rss/channel/item/title", 0)
       MsgBox GetElement("rss/channel/item/link", 0)
   Else
       Debug.Print Doc.parseError
   End If
   
   Set Doc = Nothing
End Sub

Private Function GetElement(NodeKey As String, Indice As Integer)
   GetElement = Doc.getElementsByTagName(NodeKey).Item(Indice).Text
End Function


saludos.
Título: Re: Problemas para leer un RSS (Microsoft.XMLDOM)
Publicado por: LeandroA en 9 Junio 2011, 23:36 PM
Buena data seba, de todas formas la forma el de raul es una alternativa por si falla la primera, no es solo un rss de taringa sino es para cualquier rss de cualquier pagina.

SAludos.