# How do I open an uploaded xml in controller?

**URL:** <https://www.ruby-forum.com/t/how-do-i-open-an-uploaded-xml-in-controller/141926>\
**Category:** Rails\
**Created:** [July 1, 2008, 8:33pm UTC](https://www.ruby-forum.com/t/how-do-i-open-an-uploaded-xml-in-controller/141926 "2008-07-01T20:33:12Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![loominator1970](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/6f9a4e/32.png) [@loominator1970](https://www.ruby-forum.com/u/loominator1970)\
**Post date:** [July 1, 2008, 8:33pm UTC](https://www.ruby-forum.com/t/how-do-i-open-an-uploaded-xml-in-controller/141926/1 "2008-07-01T20:33:12Z")

</div>

Hello,

This seems like a fairly simple solution, but I keep running into  
roadblocks. I’m using a small form to select an xml from the user’s  
local file system, and then parsing the information out using REXML.  
The form works fine, but I can’t seem to get the body of the xml doc  
opened with in the controller. I’ve included the code snippets below  
for view and controller, can anyone see what i’m missing/doing wrong?

thanks,  
Dave

view:  
\<% form\_tag (:action =\> ‘uploadXML’, :multipart =\> true) do %\>  
\<%= file\_field\_tag ‘file’ %\>

  
\<%= submit\_tag “Upload” %\>  
\<% end %\>

controller:  
require ‘rexml/document’  
include REXML

def uploadXML  
xml\_file = params[:file].read  
elements = Document.new File.new(xml\_file)

```
elements.root.each_element do |e|
  .......
end

```

end

---

<div class="post-metadata">

**Author:** ![loominator1970](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/6f9a4e/32.png) [@loominator1970](https://www.ruby-forum.com/u/loominator1970)\
**Post date:** [July 2, 2008, 2:47pm UTC](https://www.ruby-forum.com/t/how-do-i-open-an-uploaded-xml-in-controller/141926/2 "2008-07-02T14:47:38Z")

</div>

I am not sure if you can directly read params[:file] as a file handle.  
I  
could be wrong.

if you debug your output by typing logger.info(#{xml\_file}) might  
provide  
some hints.

On Tue, Jul 1, 2008 at 1:48 PM, loominator1970  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![loominator1970](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/6f9a4e/32.png) [@loominator1970](https://www.ruby-forum.com/u/loominator1970)\
**Post date:** [July 2, 2008, 3:42pm UTC](https://www.ruby-forum.com/t/how-do-i-open-an-uploaded-xml-in-controller/141926/3 "2008-07-02T15:42:12Z")

</div>

On 1 Jul 2008, at 18:48, loominator1970 wrote:

> thanks,  
> require ‘rexml/document’  
> include REXML
> 
> def uploadXML  
> xml\_file = params[:file].read  
> elements = Document.new File.new(xml\_file)

Just elements = Document.new params[:file]  
should do the trick, or elements = Document.new xml\_file would  
probably work too.

Fred
