# Converting HTML input data to pre-format XML data

**URL:** <https://www.ruby-forum.com/t/converting-html-input-data-to-pre-format-xml-data/136200>\
**Category:** Ruby\
**Created:** [April 29, 2008, 7:31pm UTC](https://www.ruby-forum.com/t/converting-html-input-data-to-pre-format-xml-data/136200 "2008-04-29T19:31:02Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![phillyman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/b19c9b/32.png) [@phillyman](https://www.ruby-forum.com/u/phillyman)\
**Post date:** [April 29, 2008, 7:31pm UTC](https://www.ruby-forum.com/t/converting-html-input-data-to-pre-format-xml-data/136200/1 "2008-04-29T19:31:02Z")

</div>

Hi All,

I am really new to Ruby and here is my dilemma. I need to write a  
ruby-cgi (.rb) script that just spits back pre-formatted XML. Basically,  
my script would accomplish the following:

a.) Read in your form variables (name-value pair).  
b.) Construct the right xml block.  
c.) Submit the XML to BaseCamp API.

I have an interface to implement step c. However, as a start, I  
implemented “step a” (as shown below). It simply reads in my HTML-input  
fields (via submit from HTML-form to the script) and POST it to the  
server as “raw” text.

#!c:\ruby\bin\ruby  
require “cgi”  
require ‘rexml/document’  
include REXML

cgi = CGI.new  
response = String.new

#loop thru each name-value paired-element and save them in response  
cgi.params.each\_pair{|key, value|  
response += “name = #{key}, value = #{value}  
”  
}

cgi.out(“charset” =\> “utf-8”,  
“type” =\> “text/html”) {  
response  
}

produces:

name = location5, value = Code for Location 5  
name = ScoutArea, value = Add New Resource  
name = FriendlyResponse, value = 9  
name = ForceNewBug, value = 9  
name = ScoutDefaultMessage, value = Thank you for submitting your issue.  
The request has been logged in the Issue Tracking System and will be  
handled in priority order.  
name = resourceURL, value = [http://stuff.com](http://stuff.com)  
name = Extra, value = This is a test  
name = location1, value = Code for Location 1  
name = location2, value = Code for Location 2  
name = resourceAnnotation, value = This is a test  
name = location3, value = Code for Location 3  
name = resourceType, value = Type  
name = location4, value = Code for Location 4  
name = ScoutProject, value = Project Name  
name = ScoutUserName, value = John D.  
name = resourceTitle, value = New drugs for Type II Diabetes Patients  
name = Description, value = Add New Resource: New drugs for Type II  
Diabetes Patients

“Step b” is to convert the “posted” text to a pre-formated XML block  
that will be submitted to BaseCamp API (step c).

When I changed cgi-out to xml type shown below (with the rest of the  
script the same)

cgi.out(“charset” =\> “utf-8”,  
“type” =\> “text/xml”) {  
response

it produces the following error message:

XML Parsing Error: syntax error  
Location: [http://mystuff/cgi-bin/Submitter.rb](http://mystuff/cgi-bin/Submitter.rb)  
Line Number 1, Column 1:

name = location5, value = Code for Location 5  
name = ScoutArea,  
value = Add New Resource  
name = FriendlyResponse, value = 1  
name  
= ForceNewBug, value = 1  
name = ScoutDefaultMessage, value = Thank  
you for submitting your issue. The request has been logged in the Issue  
Tracking System and will be handled in priority order.  
name =  
resourceURL, value = [http://stuff.com](http://stuff.com)  
name = Extra, value =  
^

QUESTION: I went through Ruby Standard Library and found some REXML  
class-method, but I am not familiar with which one to use and how to use  
them, yet.

---

<div class="post-metadata">

**Author:** ![phillyman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/b19c9b/32.png) [@phillyman](https://www.ruby-forum.com/u/phillyman)\
**Post date:** [April 29, 2008, 8:58pm UTC](https://www.ruby-forum.com/t/converting-html-input-data-to-pre-format-xml-data/136200/2 "2008-04-29T20:58:08Z")

</div>

google for rexml, and maybe look around for some XML posts that look  
right and try and recreate them [?]
