Dave Green wrote:
> I am getting an encoding problem when trying to write an xml file out
> after it generated by a StringTemplater
> (http://github.com/starapor/slippers/tree/). I am using the templater to
> generate an xml file from within Cucumber. The template looks fine and
> produces xml correctly but when you use the string from the
> engine.render(Slippers::BindingWrapper.new(binding )).to_str method and
> pass it to a new rexml\document or File.new the generated file is
> unreadable.
>
> I have included the problem file on gist, link below and the example is
> called encoding_problem.rb.
>
> git clone git://gist.github.com/546222.git gist-546222
I git cloned the file and looked through to see if i could find the
problem. Seems more than just an encoding problem from when I worked on
it.
In both encoding_problem.rb and test_templater.rb, I had to change
Slippers to lowercase slippers when requiring it.
Also, the encoding problem appears to be because of how Document.new
works. In the xml_template.st, once I changed it from "utf-16" to
"utf-8", it started parsing correctly, but had other errors. I'm
guessing this is because the string uses 1 byte per character, but
utf-16 gave the Document.new the impression that each character used 2
bytes.
Once I tried running the encoding_problem.rb again, I eventually
realized from the error that a tag in items.st wasn't closed properly.
The ending price tag is missing a slash. After all this was done, it's
output was:
<?xml version='1.0' encoding='UTF-8'?>
<SearchResponse xmlns

si='http://www.w3.org/2001/XMLSchema-instance'
xmlns

sd='http://www.w3.org/2001/XMLSchema'>
<response_id>1000</response_id>
<number_of_products>2</number_of_products>
<items>
<stock_code>ABC001</stock_code>
<description>An item description</description>
<price>100</price>
</items>
<items>
<stock_code>ABC002</stock_code>
<description>Another item</description>
<price>150</price>
</items>
</SearchResponse>
I hope this was helpful.
My ruby is 1.8.7
--
Posted via
http://www.ruby-forum.com/.