[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

ruby - rexml/streamlistner - error: uninitialized constant

jsp408

6/15/2006 2:15:00 AM

Using ruby 1.8.4-17_rc2, example from Enterprise Integration with ruby
page 109:
#Generates the followwing error: uninitialized constant

Would someone look at this example and annotate what is wrong,

Thank you, John
====================test-xml2.rb==============================
require 'rexml/streamlistener'

class ParcelHistoryListener
include StreamListener

def tag_name
puts tag_name
end

end

Document.parse_stream(
File.new('parcel.xml'),
ParcelHistoryListener.new
)


================= parcel.xml =============================
<?xml version="1.0" encoding="UTF-8"?>
<book name="Directory">
<person surname="Musterman" name="Max">
<address?
<street>2323 Any Street</street>
<postal-code>12345</postal-code>
<city>AnyWhere</city>
</address>
<position longitude="12.15" latitude="56.123"/>
</person>
<person surname="Musterman" name="John">
<address>
<street>2323 Any Street</street>
<postal-code>12345</postal-code>
<city>AnyWhere</city></address>
<position longitude="12.15" latitude="56.123"/>
</person>
</book>


#Generates the followwing error:
# C:/0Ruby/0/XML/xml-stream.rb:5: uninitialized constant
ParcelHistoryListener::StreamListener (NameError)

2 Answers

Robert Klemme

6/15/2006 10:17:00 AM

0

jsp408@comcast.net wrote:
> Using ruby 1.8.4-17_rc2, example from Enterprise Integration with ruby
> page 109:
> #Generates the followwing error: uninitialized constant
>
> Would someone look at this example and annotate what is wrong,
>
> Thank you, John
> ====================test-xml2.rb==============================
> require 'rexml/streamlistener'
>
> class ParcelHistoryListener
> include StreamListener
>
> def tag_name
> puts tag_name
> end
>
> end
>
> Document.parse_stream(
> File.new('parcel.xml'),
> ParcelHistoryListener.new
> )
>
>
> ================= parcel.xml =============================
> <?xml version="1.0" encoding="UTF-8"?>
> <book name="Directory">
> <person surname="Musterman" name="Max">
> <address?
> <street>2323 Any Street</street>
> <postal-code>12345</postal-code>
> <city>AnyWhere</city>
> </address>
> <position longitude="12.15" latitude="56.123"/>
> </person>
> <person surname="Musterman" name="John">
> <address>
> <street>2323 Any Street</street>
> <postal-code>12345</postal-code>
> <city>AnyWhere</city></address>
> <position longitude="12.15" latitude="56.123"/>
> </person>
> </book>
>
>
> #Generates the followwing error:
> # C:/0Ruby/0/XML/xml-stream.rb:5: uninitialized constant
> ParcelHistoryListener::StreamListener (NameError)
>

There is no StreamListener in scope ParcelHistoryListener. You want
REXML::StreamListener.

robret

zycte

6/15/2006 11:31:00 AM

0

On 2006-06-15 04:14:49 +0200, jsp408@comcast.net said:

> Using ruby 1.8.4-17_rc2, example from Enterprise Integration with ruby
> page 109:
> #Generates the followwing error: uninitialized constant
>
> Would someone look at this example and annotate what is wrong,
>
> Thank you, John
> ====================test-xml2.rb==============================
> require 'rexml/streamlistener'
>
> class ParcelHistoryListener
> include StreamListener
>
> def tag_name
> puts tag_name
> end
>
> end
>
> Document.parse_stream(
> File.new('parcel.xml'),
> ParcelHistoryListener.new
> )
>
>
> ================= parcel.xml =============================
> <?xml version="1.0" encoding="UTF-8"?>
> <book name="Directory">
> <person surname="Musterman" name="Max">
> <address?
> <street>2323 Any Street</street>
> <postal-code>12345</postal-code>
> <city>AnyWhere</city>
> </address>
> <position longitude="12.15" latitude="56.123"/>
> </person>
> <person surname="Musterman" name="John">
> <address>
> <street>2323 Any Street</street>
> <postal-code>12345</postal-code>
> <city>AnyWhere</city></address>
> <position longitude="12.15" latitude="56.123"/>
> </person>
> </book>
>
>
> #Generates the followwing error:
> # C:/0Ruby/0/XML/xml-stream.rb:5: uninitialized constant
> ParcelHistoryListener::StreamListener (NameError)

I don't see what you are trying to do with

> def tag_name
> puts tag_name
> end

Basically, this is an infinite recursive procedure. The tag_name after
puts will be resolved by calling the method tag_name again. I think you
want something like:

def start_tag(tag_name, attrs)
puts tag_name
end