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
Parece que tendrás que descargarlo y leerlo con LoadXML, aunque si tiene caracteres "raros" los tomará como "?"
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
<?xml version="1.0"?>
<symbol>€?</symbol>
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
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
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.
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.