Robert Klemme
10/21/2008 6:15:00 AM
On 21.10.2008 01:04, Ryan Fitz wrote:
> Hello all,
>
> I have been using REXML to help me merge some XML files. I noticed that
> simply opening an XML document and writing it to a file will
> automatically convert the blank nodes with a start-tag and an end-tag to
> empty-element tags. Here is an example:
>
> Original.xml:
> <User>
> <Name>John</Name>
> <Address1>123 Maple Lane</Address1>
> <Address2></Address2>
> <City>Chicago</City>
> <State>IL</State>
> </User>
>
> Basic Ruby Script:
> require 'rexml/document'
> xml = REXML::Document.new(File.open("Original.xml"))
> f = File.new("New.xml","w")
> f.puts xml
Better use the block form of File.open here.
> New.xml:
> <User>
> <Name>John</Name>
> <Address1>123 Maple Lane</Address1>
> <Address2 />
> <City>Chicago</City>
> <State>IL</State>
> </User>
>
> In this example I would like to prevent Address2 from being modified to
> use empty-element tags. I would rather it be displayed as
> <Address2></Address2>. Is there a way to prevent REXML from converting
> blank nodes?
There is no point in doing this since both representations are
equivalent from an XML point of view. I don't believe there is such a
mechanism. What does REXML's documentation say?
Cheers
robert