Rubyのバージョンは2.1.2です。

REXMLを使ってXML内の特定のタグ以下のノードにマッチさせたいです。
タグが英語であればマッチするのですが、日本語のタグだとルート以下の全体がマッチしてしまいます。
例えば、XML解析のRubyコードは以下のようになっています。

require 'rexml/document'

doc = nil
File.open("example.xml") do |file|
  doc = REXML::Document.new(file)
end

puts REXML::XPath.match(doc, "/root/a")

この時、読み込むexample.xmlが以下のような場合は、

<?xml version="1.0" ?>
<root>
  <a>
    <b/>
  </a>
  <a>
    <b>bbb1</b>
    <b>bbb2</b>
      <e>eeee1</e>
      <f>ffff1</f>
    <b>bbb3</b>
    <c>ccc1</c>
  </a>
  <a>
    <b>bbb4</b>
    <b>bbb5</b>
  </a>
</root>

以下のように返ってきますが、

#<a>
#  <b/>
#</a>
#<a>
#  <b>bbb1</b>
#  <b>bbb2</b>
#    <e>eeee1</e>
#    <f>ffff1</f>
#  <b>bbb3</b>
#  <c>ccc1</c>
#</a>
#<a>
#  <b>bbb4</b>
#  <b>bbb5</b>
#</a>

example.xmlが以下のような場合、

<?xml version="1.0" ?>
<本棚>
  <本>
    <b/>
  </本>
  <本>
    <b>bbb1</b>
    <b>bbb2</b>
      <e>eeee1</e>
      <f>ffff1</f>
    <b>bbb3</b>
    <c>ccc1</c>
  </本>
  <本>
    <b>bbb4</b>
    <b>bbb5</b>
  </本>
</本棚>

Rubyのコードを以下のように書き換えても、

# coding: utf-8
require 'rexml/document'

doc = nil
File.open("example.xml") do |file|
  doc = REXML::Document.new(file)
end

puts REXML::XPath.match(doc, "/本棚/本")

以下のように返ってきます。

#<本棚>
#  <本>
#    <b/>
#  </本>
#  <本>
#    <b>bbb1</b>
#    <b>bbb2</b>
#      <e>eeee1</e>
#      <f>ffff1</f>
#    <b>bbb3</b>
#    <c>ccc1</c>
#  </本>
#  <本>
#    <b>bbb4</b>
#    <b>bbb5</b>
#  </本>
#</本棚>

理想は以下のように返ってきて欲しいです。

#<本>
#  <b/>
#</本>
#<本>
#  <b>bbb1</b>
#  <b>bbb2</b>
#    <e>eeee1</e>
#    <f>ffff1</f>
#  <b>bbb3</b>
#  <c>ccc1</c>
#</本>
#<本>
#  <b>bbb4</b>
#  <b>bbb5</b>
#</本>

XMLファイル自体の文字コードはUTF-8です。 どのようにしたら希望通りにパースされた結果を得ることができるでしょうか?