Problemas con xml


#1

Saludos a todos:
Estoy desarrollando una aplicación rails que permite la comunicación con el
servicio blogger de google, debido a esto necesito parsear una de las
respuestas que da google, el archivo XML es mucho mas largo pero solo
pongo parte que me interesa.

tag:blogger.com,1999:user-889602898048.blog-26689354
2007-04-16T13:02:08.725-07:00
2009-01-17T16:51:38.281-08:00
eX Inferno

Rock cubano. Metal progresivo


.
.
.

Utilizando REXML escribí este código:
require ´rexml/document´
feed = REXML::Document.new(parse)
id=feed.elements["//link[@href=‘http://ex-inferno.blogspot.com’]"].parent.attributes(id)

Creo que eso deberia funcionar pero la respuesta que devuelve es
tag:blogger.com,1999:user-889602898048.blog es decir, trunca la cadena
después del “-”. ¿Alguna idea?


#2

Yoandy Rodriguez M.
escribió:> <link rel=‘alternate’ type=‘text/html’

Creo que eso deberia funcionar pero la respuesta que devuelve es tag:blogger.com,1999:user-889602898048.blog es decir, trunca la cadena después del “-”. ¿Alguna idea?


Ror-es mailing list
removed_email_address@domain.invalid
http://lists.simplelogica.net/mailman/listinfo/ror-es

La verdad es que no sabría decir tu problema lo que si que te puedo es
animarte a probar parsearlo con xml-simple [1]

require ‘xmlsimple’
ref = XmlSimple.xml_in(parse)

Obteniendo algo de la forma:

{“title”=>[{“type”=>“text”, “content”=>“eX Inferno”}],
“published”=>[“2007-04-16T13:02:08.725-07:00”],
“id”=>[“tag:blogger.com,1999:user-889602898048.blog-26689354”],
“link”=>

[{“href”=>“http://www.blogger.com/feeds/12653151487362726817/blogs/26689354”,
“rel”=>“self”,
“type”=>“application/atom+xml”},
{“href”=>“http://ex-inferno.blogspot.com/”,
“rel”=>“alternate”,
“type”=>“text/html”}],
“summary”=>[{“type”=>“html”, “content”=>“Rock cubano. Metal
progresivo”}],
“updated”=>[“2009-01-17T16:51:38.281-08:00”]}

de forma que para acceder nos bastaría con ref[‘id’]

Un saludo.

[1] http://xml-simple.rubyforge.org/


Miguel Ángel Martínez
Triviño http://martineztrivino.es
GPG ID: 0x5F15D017


#3

El Thursday 12 February 2009 00:25:17 Yoandy Rodriguez M.
escribió:> <link rel=‘self’ type=‘application/atom+xml’

feed = REXML::Document.new(parse)
id=feed.elements["//link[@href=‘http://ex-inferno.blogspot.com’]"].parent.a
ttributes(id)

Creo que eso deberia funcionar pero la respuesta que devuelve es
tag:blogger.com,1999:user-889602898048.blog es decir, trunca la cadena
después del “-”. ¿Alguna idea?


Ror-es mailing list
removed_email_address@domain.invalid
http://lists.simplelogica.net/mailman/listinfo/ror-es

A mi lo que has puesto no me devuelve eso, te faltaría una / despues de
blogspot.com, si no me encuentra ningun elemento link:

id=feed.elements["//link[@href=‘http://ex-inferno.blogspot.com/’]"].parent

Con eso obtienes el elemento entry, pero attributes me devuelve un hash
vacío.
Para obtener el texto del elemento id:

id=feed.elements["//link[@href=‘http://ex-inferno.blogspot.com/’]"].parent.elements['id’].text

Sergio Cambra .:: entreCables S.L. ::.
Nicolás Guillén 6, locales 2 y 3. 50.018 Zaragoza
T) 902 021 404 F) 976 52 98 07 E) removed_email_address@domain.invalid


#4

id=feed.elements["//link[@href=‘http://ex-inferno.blogspot.com’]"].parent.attributes(id)

La verdad es que no sabría decir tu problema lo que si que te puedo es
animarte a probar parsearlo con xml-simple [1]

Es un buen consejo. Aunque depende de cómo vayas a usar tu XML, se te
puede quedar pequeño. Veo que usas XPath para parsear el XML. En ese
caso XmlSimple no te va a servir, pero puedes utilizar nokogiri [1], que
es un parser XML mucho más rápido que rexml y funciona muy bien. Está
basado en libxml, por lo que tiene como requisito que instales
previamente libxml en tu sistema.

suerte,

j

[1] http://github.com/tenderlove/nokogiri/tree/master


javier ramírez

…i do ruby on rails development in madrid, spain, at
http://www.aspgems.com
…you can find out more about me on http://formatinternet.wordpress.com
and http://workingwithrails.com/person/5987-javier-ramirez


#5

Muchas gracias, ambas respuestas me fueron de ggran ayuda
Saludos

-----Mensaje original-----
De: removed_email_address@domain.invalid
[mailto:removed_email_address@domain.invalid] En nombre de Sergio
Cambra .:: entreCables - Symbol ServiciosInformáticos S.L. ::.
Enviado el: Thursday, February 12, 2009 4:56 AM
Para: La lista sobre Ruby On Rails (rubyonrails.com) en castellano
Asunto: Re: [Ror-es] problemas con xml

El Thursday 12 February 2009 00:25:17 Yoandy Rodriguez M.
escribió:> Saludos a todos:

href='http://www.blogger.com/feeds/12653151487362726817/blogs/26689354'

id=feed.elements["//link[@href=‘http://ex-inferno.blogspot.com’]"].parent.a
ttributes(id)

Creo que eso deberia funcionar pero la respuesta que devuelve es
tag:blogger.com,1999:user-889602898048.blog es decir, trunca la cadena
después del “-”. ¿Alguna idea?


Ror-es mailing list
removed_email_address@domain.invalid
http://lists.simplelogica.net/mailman/listinfo/ror-es

A mi lo que has puesto no me devuelve eso, te faltaría una / despues de
blogspot.com, si no me encuentra ningun elemento link:

id=feed.elements["//link[@href=‘http://ex-inferno.blogspot.com/’]"].parent

Con eso obtienes el elemento entry, pero attributes me devuelve un hash
vacío.
Para obtener el texto del elemento id:

id=feed.elements["//link[@href=‘http://ex-inferno.blogspot.com/’]"].parent.elements['id’].text

Sergio Cambra .:: entreCables S.L. ::.
Nicolás Guillén 6, locales 2 y 3. 50.018 Zaragoza
T) 902 021 404 F) 976 52 98 07 E) removed_email_address@domain.invalid


Ror-es mailing list
removed_email_address@domain.invalid
http://lists.simplelogica.net/mailman/listinfo/ror-es