how to serialize hash to a file?

H

hurcan solter

i have an xml file that goes like;

<objectClass name="EmitterBeam" >
<attribute name="BeamElevationCenter" dataType="Float1"/>
<attribute name="BeamIdentifier" dataType="HLAoctet"/>
</objectClass>

at some point i need the look up the data type for different
attributes.
I can get the data type using a Xpath query in the form using REXML

node = $fom_file.elements["//attribute [@name = '#{attribute_name}']"]

it works okay, the thing is ,it takes ages (which is about ten
seconds)

so I have a mind to cache the attribute-datatype pairs in a hash for
faster lookup.
So can you guys tell me a simple and elegant way to do serialize
deserialize that hash to a file?
TIA
Hurcan Solter
 
J

Joel VanderWerf

hurcan said:
i have an xml file that goes like;

<objectClass name="EmitterBeam" >
<attribute name="BeamElevationCenter" dataType="Float1"/>
<attribute name="BeamIdentifier" dataType="HLAoctet"/>
</objectClass>

at some point i need the look up the data type for different
attributes.
I can get the data type using a Xpath query in the form using REXML

node = $fom_file.elements["//attribute [@name = '#{attribute_name}']"]

it works okay, the thing is ,it takes ages (which is about ten
seconds)

so I have a mind to cache the attribute-datatype pairs in a hash for
faster lookup.
So can you guys tell me a simple and elegant way to do serialize
deserialize that hash to a file?
TIA
Hurcan Solter

Pretty easy...

h = {1=>2, 3=>4}
File.open("foo", "wb") {|f| Marshal.dump(h, f)}
p File.open("foo", "rb") {|f| Marshal.load(f)} # ==> {1=>2, 3=>4}
 
R

Robert Klemme

i have an xml file that goes like;

<objectClass name="EmitterBeam" >
<attribute name="BeamElevationCenter" dataType="Float1"/>
<attribute name="BeamIdentifier" dataType="HLAoctet"/>
</objectClass>

at some point i need the look up the data type for different
attributes.
I can get the data type using a Xpath query in the form using REXML

node = $fom_file.elements["//attribute [@name = '#{attribute_name}']"]

it works okay, the thing is ,it takes ages (which is about ten
seconds)

so I have a mind to cache the attribute-datatype pairs in a hash for
faster lookup.
So can you guys tell me a simple and elegant way to do serialize
deserialize that hash to a file?
TIA
Hurcan Solter

irb(main):012:0> hash={1=>2}
=> {1=>2}
irb(main):013:0> hash.object_id
=> 1073423700
irb(main):014:0> File.open("foo", "wb") {|io| Marshal.dump(hash, io)}
=> #<File:foo (closed)>
irb(main):015:0> hash = File.open("foo", "rb") {|io| Marshal.load(io)}
=> {1=>2}
irb(main):016:0> hash.object_id
=> 134268870

Kind regards

robert
 
R

Robert Klemme

2008/5/20 Joel VanderWerf said:
hurcan said:
i have an xml file that goes like;

<objectClass name="EmitterBeam" >
<attribute name="BeamElevationCenter" dataType="Float1"/>
<attribute name="BeamIdentifier" dataType="HLAoctet"/>
</objectClass>

at some point i need the look up the data type for different
attributes.
I can get the data type using a Xpath query in the form using REXML

node = $fom_file.elements["//attribute [@name = '#{attribute_name}']"]

it works okay, the thing is ,it takes ages (which is about ten
seconds)

so I have a mind to cache the attribute-datatype pairs in a hash for
faster lookup.
So can you guys tell me a simple and elegant way to do serialize
deserialize that hash to a file?
TIA
Hurcan Solter

Pretty easy...

h = {1=>2, 3=>4}
File.open("foo", "wb") {|f| Marshal.dump(h, f)}
p File.open("foo", "rb") {|f| Marshal.load(f)} # ==> {1=>2, 3=>4}

Amazing how we nearly picked the same solution - even the file name is
identical. :)

Cheers

robert
 

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

Forum statistics

Threads
473,968
Messages
2,570,154
Members
46,702
Latest member
LukasConde

Latest Threads

Top