hello,
I am trying to make a simple ruby script that can look at a set of xml
files, and make a set of folders based on the content of the XML files.
As it stands I can import the data with REXML, but when I run the script
I get a set of errors(I posted below the code) talking about TypeError.
Take a look below and let me know what you think…
CODE_
#!/usr/bin/ruby
require ‘rexml/document’
include REXML
jnumber_file = File.new(“XML_EXPORT/export_j_number.xml”)
jname_file = File.new(“XML_EXPORT/export_j_name.xml”)
cnumber_file = File.new(“XML_EXPORT/export_cnumber.xml”)
cname_file = File.new(“XML_EXPORT/export_c_name.xml”)
jnumber_file = Document.new(jnumber_file)
jname_file = Document.new(jname_file)
cnumber_file = Document.new(cnumber_file)
cname_file = Document.new(cname_file)
puts jnumber_file
puts jname_file
puts cnumbe_file
puts cname_file
class Job
attr_accessor :client_num, :client_name, :job_num, :job_name;
def generate_files()
# print “Client Num is " + @client_num.to_s + “\n”
client_dir = @client_num.to_s + “" + @client_name
job_dir = @job_num.to_s + "” + @job_name
if(! File.exist?(client_dir))
Dir.mkdir(client_dir);
end
Dir.mkdir(client_dir+”/"+job_dir);
Dir.mkdir(client_dir+"/"+job_dir+"/parent");
Dir.mkdir(client_dir+"/"+job_dir+"/parent/old");
Dir.mkdir(client_dir+"/"+job_dir+"/parent/current");
Dir.mkdir(client_dir+"/"+job_dir+"/children");
Dir.mkdir(client_dir+"/"+job_dir+"/children/old");
Dir.mkdir(client_dir+"/"+job_dir+"/children/current");
end
end
j = Job.new
j.client_name = cname
j.client_num = cnumberfile
j.job_name = cname
j.job_num = jname_file
j.generate_files()
___END CODE
ERROE
director_v3.rb:28:in +': can't convert REXML::Document into String (TypeError) from director_v4.rb:28:in
generate_files’
from director_v4.rb:50
____END ERROR
Anything yall can see to help would be awsome!
Thanks
If you can afford the time to install Nokogiri, this might be a good
direction to take.
It has better mindshare at the moment.
Anyways, could you re-run with the formatting below?
(One typo found).
MarkT
#=================================
require ‘rexml/document’
include REXML
class Job
attr_accessor :client_num, :client_name, :job_num, :job_name
def generate_files()
client_dir = @client_num.to_s + “" + @client_name
job_dir = @job_num.to_s + "” + @job_name
unless File.exist?(client_dir) then Dir.mkdir(client_dir) end
Dir.mkdir(client_dir+"/"+job_dir)
Dir.mkdir(client_dir+"/"+job_dir+"/parent")
Dir.mkdir(client_dir+"/"+job_dir+"/parent/old")
Dir.mkdir(client_dir+"/"+job_dir+"/parent/current")
Dir.mkdir(client_dir+"/"+job_dir+"/children")
Dir.mkdir(client_dir+"/"+job_dir+"/children/old")
Dir.mkdir(client_dir+"/"+job_dir+"/children/current") end end
def declareFiles
jnumber_file = File.new(“XML_EXPORT/export_j_number.xml”)
jname_file = File.new(“XML_EXPORT/export_j_name.xml”)
cnumber_file = File.new(“XML_EXPORT/export_cnumber.xml”)
cname_file = File.new(“XML_EXPORT/export_c_name.xml”)
jnumber_file = Document.new(jnumber_file)
jname_file = Document.new(jname_file)
cnumber_file = Document.new(cnumber_file)
cname_file = Document.new(cname_file) end
j = Job.new
j.client_name = cname
j.client_num = cnumberfile
j.job_name = cname
j.job_num = jname_file
j.declareFiles
puts jnumber_file, jname_file, cnumber_file, cname_file
j.generate_files()
#=================================
Thank you for you help!
Sadly this didn’t end up working I got errors (posted below)
ERROR________
undefined local variable or method `cnumber_file’ for main:Object
(NameError)
END ERROR____
again sorry for the newness and thanks!!! fro your help
#=================================
require ‘rexml/document’
include REXML
class Job
attr_accessor :client_num, :client_name, :job_num, :job_name
def generate_files()
client_dir = @client_num.to_s + “" + @client_name
job_dir = @job_num.to_s + "” + @job_name
unless File.exist?(client_dir) then Dir.mkdir(client_dir) end
Dir.mkdir(client_dir+"/"+job_dir)
Dir.mkdir(client_dir+"/"+job_dir+"/parent")
Dir.mkdir(client_dir+"/"+job_dir+"/parent/old")
Dir.mkdir(client_dir+"/"+job_dir+"/parent/current")
Dir.mkdir(client_dir+"/"+job_dir+"/children")
Dir.mkdir(client_dir+"/"+job_dir+"/children/old")
Dir.mkdir(client_dir+"/"+job_dir+"/children/current") end end
def declareFiles
jnumber_file = File.new(“XML_EXPORT/export_j_number.xml”)
jname_file = File.new(“XML_EXPORT/export_j_name.xml”)
cnumber_file = File.new(“XML_EXPORT/export_cnumber.xml”)
cname_file = File.new(“XML_EXPORT/export_c_name.xml”)
jnumber_file = Document.new(jnumber_file)
jname_file = Document.new(jname_file)
cnumber_file = Document.new(cnumber_file)
cname_file = Document.new(cname_file) end
j = Job.new
j.client_name = cname
j.client_num = cnumberfile
j.job_name = cname
j.job_num = jname_file
j.declareFiles
puts jnumber_file, jname_file, cnumber_file, cname_file
j.generate_files()
#=================================
On Fri, Jul 16, 2010 at 1:23 AM, Ben M. [email protected] wrote:
hello,
I am trying to make a simple ruby script that can look at a set of xml
files, and make a set of folders based on the content of the XML files.
As it stands I can import the data with REXML, but when I run the script
I get a set of errors(I posted below the code) talking about TypeError.
Take a look below and let me know what you think…
$ ruby /tmp/code_below
/tmp/code_below:6:in initialize': No such file or directory - XML_EXPORT/export_j_number.xml (Errno::ENOENT) from /tmp/code_below:6:in
new’
from /tmp/code_below:6
Beyond that, is the posted code the same code that produced your sample
output?
44 j.client_name = cname
46 j.job_name = cname
But, cname is never set to anything before this point (or after).
9 cname_file = File.new(“XML_EXPORT/export_c_name.xml”)
14 cname_file = Document.new(cname_file)
19 puts cname_file
But, cname_file is never used after this point.
18 puts cnumbe_file
There is no cnumbe_file.
26 client_dir = @client_num.to_s + “_” + @client_name
@client_num comes from:
45 j.client_num = cnumberfile
13 cnumber_file = Document.new(cnumber_file)
@client_name comes from:
44 j.client_name = cname
Should that have been?:
44 j.client_name = cname_file
14 cname_file = Document.new(cname_file)
So, in line 26 we have something like:
26 client_dir = REXML::Document.to_s + “" + REXML::Document
26 client_dir = + "” + REXML::Document
26 client_dir = + REXML::Document
TypeError: can’t convert REXML::Document into String