From: Robert Klemme Date: 2011-12-08T17:45:53+09:00 Subject: Re: remove newline characters in d anchors On Thu, Dec 8, 2011 at 8:54 AM, mythpills P. wrote: > hi > > i am working on this code where i need to list the files in a dir and > store it in a xml, which i managed to do. however in the generated xml > there are newline characters (\n) appearing before and after the actual > text value of each node. > > below is the code i am using > > require 'rexml/document' > require 'find' > > doc = REXML::Document.new > main = doc.add_element 'main' > > main.attributes['name'] = "" > > # Find.find('./'){|path| puts path[2,path.length] } > Find.find('./'){|path| >  if path != './dirlisting.rb' >    if ! File::directory? ( path ) >      newfile = main.add_element 'file' >      newfile.text = path[2,path.length] I think you want newfile.text = path[2...path.length] or newfile.text = path[2..-1] That won't solve your nl issue but is more correct. >  end >  end > } > > outfile = open('dirlist.xml', 'w') > doc.write(outfile, 0) You do not close the file properly. Better do open('dirlist.xml', 'w') {|outfile| doc.write(outfile)} > how can i get rid of those line breaks in each nodes and have a clean > node with just the text value? You want REXML::Formatters::Pretty#compact irb(main):001:0> doc = REXML::Document.new "123444" => ... irb(main):002:0> fmt = REXML::Formatters::Pretty.new => # irb(main):003:0> fmt.compact => false irb(main):004:0> fmt.compact=true => true irb(main):005:0> fmt.write(doc, $stdout) 123 444 => [, ... ] irb(main):006:0> fmt.compact=false => false irb(main):007:0> fmt.write(doc, $stdout) 123 444 => [, ... ] Kind regards robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/