# Nokogiri 1.0.5 Released

**URL:** <https://www.ruby-forum.com/t/nokogiri-1-0-5-released/153197>\
**Category:** Ruby\
**Created:** [November 13, 2008, 7:43am UTC](https://www.ruby-forum.com/t/nokogiri-1-0-5-released/153197 "2008-11-13T07:43:52Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![aaronpowell](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/7bcc69/32.png) [@aaronpowell](https://www.ruby-forum.com/u/aaronpowell)\
**Post date:** [November 13, 2008, 7:43am UTC](https://www.ruby-forum.com/t/nokogiri-1-0-5-released/153197/1 "2008-11-13T07:43:52Z")

</div>

nokogiri version 1.0.5 has been released!

- [http://nokogiri.rubyforge.org/](http://nokogiri.rubyforge.org/)
- [http://github.com/tenderlove/nokogiri/wikis](http://github.com/tenderlove/nokogiri/wikis)
- [http://github.com/tenderlove/nokogiri/tree/master](http://github.com/tenderlove/nokogiri/tree/master)
- [http://rubyforge.org/mailman/listinfo/nokogiri-talk](http://rubyforge.org/mailman/listinfo/nokogiri-talk)
- [http://nokogiri.lighthouseapp.com/projects/19607-nokogiri/overview](http://nokogiri.lighthouseapp.com/projects/19607-nokogiri/overview)

Nokogiri (é‹¸) is an HTML, XML, SAX, and Reader parser with CSS3 and  
XPath search support.

Changes:

### 1.0.5

- Bugfixes

== FEATURES:

- XPath support for document searching
- CSS3 selector support for document searching
- XML/HTML builder
- Drop in replacement for Hpricot (though not bug for bug)

Nokogiri parses and searches XML/HTML very quickly, and also has  
correctly implemented CSS3 selector support as well as XPath support.

Here is a speed test:

- [22176’s gists · GitHub](http://gist.github.com/22176)

Nokogiri also features an Hpricot compatibility layer to help ease the  
change  
to using correct CSS and XPath.

== SUPPORT:

The Nokogiri mailing list is available here:

- [http://rubyforge.org/mailman/listinfo/nokogiri-talk](http://rubyforge.org/mailman/listinfo/nokogiri-talk)

The bug tracker is available here:

- [Lighthouse - Beautifully Simple Issue Tracking](http://nokogiri.lighthouseapp.com/projects/19607-nokogiri/overview)

== SYNOPSIS:

require ‘nokogiri’  
require ‘open-uri’

doc =  
Nokogiri::HTML(open(‘[tenderlove - Google Search](http://www.google.com/search?q=tenderlove)’))

#### 

# Search for nodes by css

doc.css(‘h3.r a.l’).each do |link|  
puts link.content  
end

#### 

# Search for nodes by xpath

doc.xpath(‘//h3/a[@class=“l”]’).each do |link|  
puts link.content  
end

#### 

# Or mix and match.

doc.search(‘h3.r a.l’, ‘//h3/a[@class=“l”]’).each do |link|  
puts link.content  
end

- [http://nokogiri.rubyforge.org/](http://nokogiri.rubyforge.org/)
- [http://github.com/tenderlove/nokogiri/wikis](http://github.com/tenderlove/nokogiri/wikis)
- [http://github.com/tenderlove/nokogiri/tree/master](http://github.com/tenderlove/nokogiri/tree/master)
- [http://rubyforge.org/mailman/listinfo/nokogiri-talk](http://rubyforge.org/mailman/listinfo/nokogiri-talk)
- [http://nokogiri.lighthouseapp.com/projects/19607-nokogiri/overview](http://nokogiri.lighthouseapp.com/projects/19607-nokogiri/overview)

---

<div class="post-metadata">

**Author:** ![aaronpowell](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/7bcc69/32.png) [@aaronpowell](https://www.ruby-forum.com/u/aaronpowell)\
**Post date:** [November 13, 2008, 9:48am UTC](https://www.ruby-forum.com/t/nokogiri-1-0-5-released/153197/2 "2008-11-13T09:48:33Z")

</div>

hi.

Is nested search supported?

For example,

xml =  
“subbody1subbody2”  
doc.xpath("//body").each do |body|  
puts body.at(“subbody”).content  
end

I expected to see

subbody1  
subbody2

but seems it always use the root element.

On Thu, Nov 13, 2008 at 2:40 PM, Aaron P.  
\<removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![aaronpowell](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/7bcc69/32.png) [@aaronpowell](https://www.ruby-forum.com/u/aaronpowell)\
**Post date:** [November 13, 2008, 4:35pm UTC](https://www.ruby-forum.com/t/nokogiri-1-0-5-released/153197/3 "2008-11-13T16:35:18Z")

</div>

On Thu, Nov 13, 2008 at 05:44:50PM +0900, Dingding Ye wrote:

> end
> 
> I expected to see
> 
> subbody1  
> subbody2
> 
> but seems it always use the root element.

Yes. Try using an xpath search as such:

xml =  
“subbody1subbody2”

Nokogiri::XML(xml).xpath("//body").each do |body|  
puts body.at(".//subbody").content  
end

---

<div class="post-metadata">

**Author:** ![aaronpowell](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/7bcc69/32.png) [@aaronpowell](https://www.ruby-forum.com/u/aaronpowell)\
**Post date:** [November 13, 2008, 5:05pm UTC](https://www.ruby-forum.com/t/nokogiri-1-0-5-released/153197/4 "2008-11-13T17:05:47Z")

</div>

On Nov 13, 3:44 am, Dingding Ye [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> doc.xpath(“//body”).each do |body|  
> puts body.at(“subbody”).content  
> end
> 
> I expected to see
> 
> subbody1  
> subbody2
> 
> but seems it always use the root element.

Let me try to clear up the confusion.

at() is from Hpricot, and it searches from the root node. It is  
typically used as doc.at(‘element’)

search() is also from Hpricot, and it searches from the current node.  
This is perhaps the behavior you were expecting. An alias is ‘/’, as  
in doc/“html/body”

xpath() is like find() from libxml and you can nest those calls too.  
Note that the Hpricot xpath(), which returns the path to the node, is  
available in Nokogiri as path().

– Mark.

---

<div class="post-metadata">

**Author:** ![aaronpowell](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/7bcc69/32.png) [@aaronpowell](https://www.ruby-forum.com/u/aaronpowell)\
**Post date:** [November 13, 2008, 10:32pm UTC](https://www.ruby-forum.com/t/nokogiri-1-0-5-released/153197/5 "2008-11-13T22:32:13Z")

</div>

Great work!
