Forum: Rails-ES problemas con xml

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
D5bef118c1f829a613ae66d8f0a8e899?d=identicon&s=25 Yoandy Rodriguez Martinez (Guest)
on 2009-02-12 00:52
(Received via mailing list)
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.
  <entry>
    <id>tag:blogger.com,1999:user-889602898048.blog-26689354</id>
    <published>2007-04-16T13:02:08.725-07:00</published>
    <updated>2009-01-17T16:51:38.281-08:00</updated>
    <title type='text'>eX Inferno</title>
    <summary type='html'>Rock cubano. Metal progresivo</summary>
    <link rel='self' type='application/atom+xml'
    href='http://www.blogger.com/feeds/12653151487362726817/...
/>
    <link rel='alternate' type='text/html'
    href='http://ex-inferno.blogspot.com/' />
  .
  .
  .
</entry>

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.attribut...)

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?
E55511cd2818d173165a3d07cc448fb7?d=identicon&s=25 Miguel Angel Martinez Triviño (Guest)
on 2009-02-12 01:07
(Received via mailing list)
Yoandy Rodriguez Martinez
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
> Ror-es@lists.simplelogica.net
> 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/...,
    "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
1f2eadfb41362800ebc2cf211b91d0f7?d=identicon&s=25 javier ramirez (Guest)
on 2009-02-12 10:34
(Received via mailing list)
>> 
id=feed.elements["//link[@href='http://ex-inferno.blogspot.com']"].parent.attribut...)
>>

>> 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
Fbef10e8904c80c015dce56f3fa09bea?d=identicon&s=25 Sergio Cambra .:: entreCables - Symbol Servicios (Guest)
on 2009-02-12 10:56
(Received via mailing list)
El Thursday 12 February 2009 00:25:17 Yoandy Rodriguez Martinez
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
> Ror-es@lists.simplelogica.net
> 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.element...
--
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) sergio@entrecables.com
D5bef118c1f829a613ae66d8f0a8e899?d=identicon&s=25 Yoandy Rodriguez Martinez (Guest)
on 2009-02-13 15:53
(Received via mailing list)
Muchas gracias, ambas respuestas me fueron de ggran ayuda
Saludos


-----Mensaje original-----
De: ror-es-bounces@lists.simplelogica.net
[mailto:ror-es-bounces@lists.simplelogica.net] 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 Martinez
escribió:> Saludos a todos:
>     href='http://www.blogger.com/feeds/12653151487362726817/...
> 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
> Ror-es@lists.simplelogica.net
> 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.element...
--
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) sergio@entrecables.com
_______________________________________________
Ror-es mailing list
Ror-es@lists.simplelogica.net
http://lists.simplelogica.net/mailman/listinfo/ror-es
This topic is locked and can not be replied to.