How to convert the hash to xml - "Not all elements respond to to_xml"


#1

Hi,

I have a problem…
I am Working on Rails with Flex.
I am getting a xml from the flex form… I need to get the xml
and
has to insert the record
The xml I am getting in the form as…



100


“xyz”


12-32-122/34
123 road

unknown
state
In
321456


Developer

.
.

            </insert>
            <insert>
                  <number>
                            101
                 </number>
                 <name>
                             "pqr"
                 </name>
                  <address>
                              <street>

1-122/76
cross road


city
some state
US
321456


Developer

.
.

            </insert>
                 .
                 .
                 .
     </root>

In these… each insert tag is a record which have to be entered
into
DB.
But we are receiving the xml as HashWithIndifferentAccess
params[:xml].class => HashWithIndifferentAccess

We tried converting into hash
h = (params[:xml]).Hash
puts “#{h.to_xml}”

it is showing the error as “Not all elements respond to to_xml”

How to achieve the insertion are there any ways to get the xml…


#2

On Nov 28, 7:09 am, “hema gonaboina” removed_email_address@domain.invalid wrote:

                            100
                              <city> unknown </city>
            </insert>

1-122/76
.
But we are receiving the xml as HashWithIndifferentAccess
params[:xml].class => HashWithIndifferentAccess

Rails parses the xml for you (into a hash). you can get the raw body
of the request if you want (@request.body)

Fred


#3

Frederick C. wrote:

On Nov 28, 7:09�am, “hema gonaboina” removed_email_address@domain.invalid wrote:

� � � � � � � � � � � � � � � � 100
� � � � � � � � � � � � � � � � � unknown
� � � � � � � �
1-122/76
� � � � � � � � � � � �.
� But we are receiving the xml as HashWithIndifferentAccess
� params[:xml].class => �HashWithIndifferentAccess

Rails parses the xml for you (into a hash). you can get the raw body
of the request if you want (@request.body)

Fred

Thank You Fred for your response

But, I didn’t get you… Can U explain me with example… I need the xml
only but i am receiving object of class HashWithIndifferentAccess… so i
am trying to convert into pure Hash and then to xml…
How to receive the value as xml ?
If it works no need of conversion…
How to use the @request.body ?


#4

On Nov 28, 11:25 am, Hema G. removed_email_address@domain.invalid
wrote:

But, I didn’t get you… Can U explain me with example… I need the xml
only but i am receiving object of class HashWithIndifferentAccess… so i
am trying to convert into pure Hash and then to xml…
How to receive the value as xml ?
If it works no need of conversion…
How to use the @request.body ?

Don’t know how else to explain it - request.body ( my mistake - the @
there is deprecated) is exactly the bytes that were sent to you.
Trying to convert the hash back to xml seems completely circular (and
HashWithIndifferentAccess is almost the same as Hash - the only
difference is that you can use symbols or strings for the keys and
they are considered identical)

Fred


#5

Hema G. wrote:

Frederick C. wrote:

On Nov 28, 7:09�am, “hema gonaboina” removed_email_address@domain.invalid wrote:

� � � � � � � � � � � � � � � � 100
� � � � � � � � � � � � � � � � � unknown
� � � � � � � �
1-122/76
� � � � � � � � � � � �.
� But we are receiving the xml as HashWithIndifferentAccess
� params[:xml].class => �HashWithIndifferentAccess

Rails parses the xml for you (into a hash). you can get the raw body
of the request if you want (@request.body)

Fred

Thank You Fred for your response

But, I didn’t get you… Can U explain me with example… I need the xml
only but i am receiving object of class HashWithIndifferentAccess… so i
am trying to convert into pure Hash and then to xml…
How to receive the value as xml ?
If it works no need of conversion…
How to use the @request.body ?
I worked on it…
and found that it is collecting as hashes with arrays in between

 in out case it is as {"root" => {"insert"=> 

[{“name”=>“xyz”,“address”=>[{“city”=>“city”,“state”=>“state”…}],“job”=>“developer”,…},{“name”=>“pqr”,“address”=>[{},{}…],…}]}}
That is it takes arrays between the hashes…