Merge XML documents with Ruby

Dear group,

Currently I'm working with Ruby to merge several XML documents into
one. I'm using Builder to construct the 'master' XML file:

    x = Builder::XmlMarkup.new(:indent => 2)
    x.instruct! :xml, :version => "1.0", :encoding => "UTF-8"
    result = x.header do |xml|
      some_hash.each do |key, values|
        xml.company(key)
        values.each do |value|
          xml.department(value.to_xml)
        end
      end
    end

However on the spot where I write 'xml.department' trouble strikes.
The 'value' already responds to the to_xml method and generates
perfectly fine XML. I'd like to insert that XML into the master file.
If I do it the way displayed above the department tag appears twice
(once from the xml.department call and once it is used as the header
tag of the department.to_xml result). Moreover the instruct tag is
inserted and all < and > characters are escaped.

Is there anyway of doing this gracefully?
Any help is greatly appreciated.

With kind regards,
Harm

You didn't give us much to go on. What objects does the some_hash
contain? Do you have sample output?

-- Mark.

···

On Sep 26, 2:04 pm, Harm <harmaa...@gmail.com> wrote:

Dear group,

Currently I'm working with Ruby to merge several XML documents into
one. I'm using Builder to construct the 'master' XML file:

x = Builder::XmlMarkup\.new\(:indent =&gt; 2\)
x\.instruct\! :xml, :version =&gt; &quot;1\.0&quot;, :encoding =&gt; &quot;UTF\-8&quot;
result = x\.header do |xml|
  some\_hash\.each do |key, values|
    xml\.company\(key\)
    values\.each do |value|
      xml\.department\(value\.to\_xml\)
    end
  end
end

However on the spot where I write 'xml.department' trouble strikes.
The 'value' already responds to the to_xml method and generates
perfectly fine XML.

Have you try the hpricot (http://code.whytheluckystiff.net/hpricot/\) ?

Generate your xml snippets and then merge them in one final valid xml.

Nevertheless, it would be useful to have more details.

···

On Sep 26, 9:51 pm, Mark Thomas <m...@thomaszone.com> wrote:

On Sep 26, 2:04 pm, Harm <harmaa...@gmail.com> wrote:

> Dear group,

> Currently I'm working with Ruby to merge several XML documents into
> one. I'm using Builder to construct the 'master' XML file:

> x = Builder::XmlMarkup.new(:indent => 2)
> x.instruct! :xml, :version => "1.0", :encoding => "UTF-8"
> result = x.header do |xml|
> some_hash.each do |key, values|
> xml.company(key)
> values.each do |value|
> xml.department(value.to_xml)
> end
> end
> end

> However on the spot where I write 'xml.department' trouble strikes.
> The 'value' already responds to the to_xml method and generates
> perfectly fine XML.

You didn't give us much to go on. What objects does the some_hash
contain? Do you have sample output?

-- Mark.