Problemas para leer un RSS (Microsoft.XMLDOM)

Iniciado por LeandroA, 8 Junio 2011, 21:07 PM

0 Miembros y 2 Visitantes están viendo este tema.

LeandroA

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


raul338

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>

LeandroA

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

seba123neo

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.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

LeandroA

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.