[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Hpricot query

Mark

8/28/2008 2:42:00 PM

Hi all, I have a question about Hpricot:

I'm trying to parse an XML document (a google calendar feed), but I
have problems when I try to get attributes of a tag with a namespace
(ie: a colon).

Here's my code for this: date =
entry.at('gd:when').attributes['startTime']

Instead of having the expected time returned I just get 'nil'.

Anyone know why this is? Or how to get it to work properly?

Many thanks in advance,

Mark
7 Answers

Anthony Pearson

8/28/2008 2:48:00 PM

0

hpricot isn't quite friendly with namespaces from what I have tried
before (unsure about the current version). Did you tried doing a full
xpath query?

@

On Thu, Aug 28, 2008 at 9:40 AM, Mark <markjturner@gmail.com> wrote:
> Hi all, I have a question about Hpricot:
>
> I'm trying to parse an XML document (a google calendar feed), but I
> have problems when I try to get attributes of a tag with a namespace
> (ie: a colon).
>
> Here's my code for this: date =
> entry.at('gd:when').attributes['startTime']
>
> Instead of having the expected time returned I just get 'nil'.
>
> Anyone know why this is? Or how to get it to work properly?
>
> Many thanks in advance,
>
> Mark
>
>

Mark

8/28/2008 2:57:00 PM

0

On Aug 28, 3:47 pm, Anthony Pearson <a...@serialtactics.com> wrote:
> hpricot isn't quite friendly with namespaces from what I have tried
> before (unsure about the current version). Did you tried doing a full
> xpath query?
>
> @
>
> On Thu, Aug 28, 2008 at 9:40 AM, Mark <markjtur...@gmail.com> wrote:
> > Hi all, I have a question about Hpricot:
>
> > I'm trying to parse an XML document (a google calendar feed), but I
> > have problems when I try to get attributes of a tag with a namespace
> > (ie: a colon).
>
> > Here's my code for this: date =
> > entry.at('gd:when').attributes['startTime']
>
> > Instead of having the expected time returned I just get 'nil'.
>
> > Anyone know why this is? Or how to get it to work properly?
>
> > Many thanks in advance,
>
> > Mark

Hi Anthony, I haven't I must admit, unfortunately I'm not really
familiar with xpath and I don't know how to find the tag I need with
it, if anybody knows how to do that I'd be very grateful for some
pointers!

Thanks,

Mark

Anthony Pearson

8/28/2008 3:45:00 PM

0

Actually google calander has a ruby plugin/api located here
http://googlecalendar.rubyforge.org/pl...

If that's not your flavor you can start with hpricot's documentation
on xpaths here
http://code.whytheluckystiff.net/hpricot/wiki/SupportedXpathE...



On Thu, Aug 28, 2008 at 9:55 AM, Mark <markjturner@gmail.com> wrote:
> On Aug 28, 3:47 pm, Anthony Pearson <a...@serialtactics.com> wrote:
>> hpricot isn't quite friendly with namespaces from what I have tried
>> before (unsure about the current version). Did you tried doing a full
>> xpath query?
>>
>> @
>>
>> On Thu, Aug 28, 2008 at 9:40 AM, Mark <markjtur...@gmail.com> wrote:
>> > Hi all, I have a question about Hpricot:
>>
>> > I'm trying to parse an XML document (a google calendar feed), but I
>> > have problems when I try to get attributes of a tag with a namespace
>> > (ie: a colon).
>>
>> > Here's my code for this: date =
>> > entry.at('gd:when').attributes['startTime']
>>
>> > Instead of having the expected time returned I just get 'nil'.
>>
>> > Anyone know why this is? Or how to get it to work properly?
>>
>> > Many thanks in advance,
>>
>> > Mark
>
> Hi Anthony, I haven't I must admit, unfortunately I'm not really
> familiar with xpath and I don't know how to find the tag I need with
> it, if anybody knows how to do that I'd be very grateful for some
> pointers!
>
> Thanks,
>
> Mark
>
>

Mark

8/28/2008 4:04:00 PM

0

On Aug 28, 4:45 pm, Anthony Pearson <a...@serialtactics.com> wrote:
> Actually google calander has a ruby plugin/api located herehttp://googlecalendar.rubyforge.org/pl...
>
> If that's not your flavor you can start with hpricot's documentation
> on xpaths herehttp://code.whytheluckystiff.net/hpricot/wiki/SupportedXpathE...
>
> On Thu, Aug 28, 2008 at 9:55 AM, Mark <markjtur...@gmail.com> wrote:
> > On Aug 28, 3:47 pm, Anthony Pearson <a...@serialtactics.com> wrote:
> >> hpricot isn't quite friendly with namespaces from what I have tried
> >> before (unsure about the current version). Did you tried doing a full
> >> xpath query?
>
> >> @
>
> >> On Thu, Aug 28, 2008 at 9:40 AM, Mark <markjtur...@gmail.com> wrote:
> >> > Hi all, I have a question about Hpricot:
>
> >> > I'm trying to parse an XML document (a google calendar feed), but I
> >> > have problems when I try to get attributes of a tag with a namespace
> >> > (ie: a colon).
>
> >> > Here's my code for this: date =
> >> > entry.at('gd:when').attributes['startTime']
>
> >> > Instead of having the expected time returned I just get 'nil'.
>
> >> > Anyone know why this is? Or how to get it to work properly?
>
> >> > Many thanks in advance,
>
> >> > Mark
>
> > Hi Anthony, I haven't I must admit, unfortunately I'm not really
> > familiar with xpath and I don't know how to find the tag I need with
> > it, if anybody knows how to do that I'd be very grateful for some
> > pointers!
>
> > Thanks,
>
> > Mark

Thanks Anthony, unfortunately there are no examples of what I need to
do and it appears the colon has another meaning in xpath queries.

Thanks for the link to the ruby plugin, I'll have to look into that
further.

I'm still very much open to suggestions of how to do it the original
way, however.

_why

8/28/2008 6:18:00 PM

0

On Thu, Aug 28, 2008 at 11:40:33PM +0900, Mark wrote:
> I'm trying to parse an XML document (a google calendar feed), but I
> have problems when I try to get attributes of a tag with a namespace
> (ie: a colon).
>
> Here's my code for this: date =
> entry.at('gd:when').attributes['startTime']

Your query is good. I think it must be something else.

require 'rubygems'
require 'open-uri'
require 'hpricot'

url = "http://www.google.com/calendar/feeds/developer-calendar@google.com/public/...
xml = Hpricot.XML(open(url).read)
puts xml.at('gd:when').attributes['startTime']

_why

Mark

8/29/2008 10:29:00 AM

0

On Aug 28, 7:18 pm, _why <w...@ruby-lang.org> wrote:
> On Thu, Aug 28, 2008 at 11:40:33PM +0900, Mark wrote:
> > I'm trying to parse an XML document (a google calendar feed), but I
> > have problems when I try to get attributes of a tag with a namespace
> > (ie: a colon).
>
> > Here's my code for this: date =
> > entry.at('gd:when').attributes['startTime']
>
> Your query is good.  I think it must be something else.
>
>   require 'rubygems'
>   require 'open-uri'
>   require 'hpricot'
>
>   url = "http://www.google.com/calendar/feeds/developer-calen...@google.com/public/...
>   xml = Hpricot.XML(open(url).read)
>   puts xml.at('gd:when').attributes['startTime']
>
> _why

Aha, putting the .XML in the Hpricot call seems to have done the
trick, thanks!

And thanks for creating such a useful tool!

Yarnosh

1/20/2009 7:36:00 PM

0

_why wrote:
>
> require 'rubygems'
> require 'open-uri'
> require 'hpricot'
>
> url =
> "http://www.google.com/calendar/feeds/developer-calendar@google.com/public/...
> xml = Hpricot.XML(open(url).read)
> puts xml.at('gd:when').attributes['startTime']
>
> _why

Old thread brought to life...

The .XML() method was the key for me to get namespaces. Although I did
notice that it still doesn't quite work as expected.

For example this works:

xml.at('media:content')

But not this:

xml.search('media:content/media:category')

What I ended up having to do to get the desire effect was:

xml.at('media:content').search('media:category')

Is this a bug?
--
Posted via http://www.ruby-....