libxml-ruby question

Hi

  This has been driving me nuts for the past hour or two. I'm hoping someone here knows the answer.

  I need to be able to dynamically add some nodes to some xml. The example below is contrived - but hopefully clear enough so you get the 'picture'

  So - say I have a Foo object and I want to add something to a child node within Foo's xml representation before I send the response back to the user.

  In my controller ...

    def show       @foo = Foo.find(params[:id])

       respond_to do |format|         format.html # show.html.erb         format.xml { render :xml => extend_foo(@foo.to_xml) }        end      end

    private

    def extend_foo(xml)

      parser = XML::Parser.new(XML::Parser::Context.string(xml))       doc = parser.parse

      child_node_xpath = doc.find(" .... insert funky xpath string here ....")

      child_node = child_node_xpath.first

      logger.debug("\n\nbefore ...\n#{child_node.to_s}\n\n")       # this correctly outputs the contents of the 'child_node'

      child_node << child = XML::Node.new('new_node')          child['new_node_attribute'] = 'true'

      logger.debug("\n\nafter ...\n#{child_node.to_s}\n\n")       # this correctly outputs the contents of the 'child_node' - with the 'new_node' added (along with the 'new_node_attribute')

      # NOTE: everything up to here works great.

    end

  The problem is that the updated node is not part of the response sent to the client. For lake of a better term - I can't seem to figure out how to 'save' the changed node.

  Any tips/suggestions/pointers would be greatly appreciated. I'm using libxml.

Thanks Dave

    The problem is that the updated node is not part of the response sent

to the client. For lake of a better term - I can't seem to figure out how to 'save' the changed node.

Have you tried calling to_s on the document object and returning that ?

Fred