Hpricot query

M

Mark

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
 
A

Anthony Pearson

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?

@
 
M

Mark

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?

@

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,

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
 
A

Anthony Pearson

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

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



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?

@

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,

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
 
M

Mark

Actually google calander has a ruby plugin/api located herehttp://googlecalendar.rubyforge.org/plugins/doc/

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

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?
@
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!

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.
 
W

_why

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/[email protected]/public/full"
xml = Hpricot.XML(open(url).read)
puts xml.at('gd:when').attributes['startTime']

_why
 
M

Mark

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/[email protected]/public/full"
  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!
 
M

Matthew Isleb

_why said:
require 'rubygems'
require 'open-uri'
require 'hpricot'

url =
"http://www.google.com/calendar/feeds/[email protected]/public/full"
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?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,183
Messages
2,570,967
Members
47,520
Latest member
KrisMacono

Latest Threads

Top