This page contains automated test results for code from O'Reilly's Ruby Cookbook. If this code looks interesting or useful, you might want to buy the whole book.
| Creating and Modifying XML Documents | ||
|---|---|---|
| Code | Expected | Actual |
require 'rexml/document'
require
doc = REXML::Document.new
meeting = doc.add_element 'meeting'
meeting_start = Time.local(2006, 10, 31, 13)
meeting.add_element('time', { 'from' => meeting_start,
'to' => meeting_start + 3600 })
doc.children[0] |
<meeting> ... </> | <meeting> ... </> |
doc.children[0].children[0] |
"<time from='Tue Oct 31 13:00:00 EST 2006' | <time from='Tue Oct 31 13:00:00 EST 2006' to='Tue Oct 31 14:00:00 EST 2006'/> |
doc.write($stdout, 1) |
<meeting> <time from='Tue Oct 31 13:00:00 EST 2006' to='Tue Oct 31 14:00:00 EST 2006'/> </meeting> |
<meeting>
<time from='Tue Oct 31 13:00:00 EST 2006' to='Tue Oct 31 14:00:00 EST 2006'/>
</meeting> |
doc.children[0] |
<?xml ... ?> | <?xml ... ?> |
doc.children[1] |
<meeting> ... </> | <meeting> ... </> |
agenda = meeting.add_element 'agenda' doc.children[1].children[1] |
<agenda/> | <agenda/> |
agenda.add_text "Nothing of importance will be decided." agenda.add_text " The same tired ideas will be rehashed yet again." doc.children[1].children[1] |
<agenda> ... </> | <agenda> ... </> |
doc.write($stdout, 1) |
<meeting> <time from='Tue Oct 31 13:00:00 EST 2006' to='Tue Oct 31 14:00:00 EST 2006'/> <agenda> Nothing of importance will be decided. The same tired ideas will be rehashed yet again. </agenda> </meeting> |
<meeting>
<time from='Tue Oct 31 13:00:00 EST 2006' to='Tue Oct 31 14:00:00 EST 2006'/>
<agenda>Nothing of importance will be decided. The same tired ideas will be rehashed yet again.</agenda>
</meeting> |
item1 = agenda.add_element 'item' doc.children[1].children[1].children[1] |
<item/> | <item/> |
item1.text = 'Weekly status meetings: improving attendance' doc.children[1].children[1].children[1] |
<item> ... </> | <item> ... </> |
doc.write($stdout, 1) |
<meeting> <time from='Tue Oct 31 13:00:00 EST 2006' to='Tue Oct 31 14:00:00 EST 2006'/> <agenda> Nothing of importance will be decided. The same tired ideas will be rehashed yet again. <item>Weekly status meetings: improving attendance</item> </agenda> </meeting> |
<meeting>
<time from='Tue Oct 31 13:00:00 EST 2006' to='Tue Oct 31 14:00:00 EST 2006'/>
<agenda>Nothing of importance will be decided. The same tired ideas will be rehashed yet again.<item>Weekly status meetings: improving attendance</item>
</agenda>
</meeting> |
doc = REXML::Document.new %{<?xml version='1.0'?>
<girl size="little">
<foods>
<sugar />
<spice />
</foods>
<set of="nice things" cardinality="all" />
</girl>
}
root = doc[1] |
<girl size='little'> ... </> | <girl size='little'> ... </> |
root.name = 'boy'
root.elements['//sugar'].name = 'snails'
root.delete_element('//spice')
set = root.elements['//set']
set.attributes["of"] = "snips"
set.attributes["cardinality"] = 'some'
root.add_element('set', {'of' => 'puppy dog tails', 'cardinality' => 'some' })
doc.write |
<?xml version='1.0'?> <boy size='little'> <foods> <snails/> </foods> <set of='snips' cardinality='some'/> <set of='puppy dog tails' cardinality='some'/></boy> |
<?xml version='1.0'?><boy size='little'> <foods> <snails/> </foods> <set of='snips' cardinality='some'/> <set of='puppy dog tails' cardinality='some'/></boy> |
root.attributes['size'] = nil doc.write($stdout, 0) |
<?xml version='1.0'?> <boy> <foods> ... </boy> |
<?xml version='1.0'?> <boy> <foods> <snails/> </foods> <set of='snips' cardinality='some'/> <set of='puppy dog tails' cardinality='some'/> </boy> |
doc.elements["//snails"].replace_with(REXML::Element.new("escargot"))
class REXML::Element
def with_element(*args)
e = add_element(*args)
yield e if block_given?
end
end
doc = REXML::Document.new
doc.with_element('girl', {'size' => 'little'}) do |girl|
girl.with_element('foods') do |foods|
foods.add_element('sugar')
foods.add_element('spice')
end
girl.add_element('set', {'of' => 'nice things', 'cardinality' => 'all'})
end
doc.write($stdout, 0) |
<girl size='little'> <foods> <sugar/> <spice/> </foods> <set of='nice things' cardinality='all'/> </girl> |
<girl size='little'>
<foods>
<sugar/>
<spice/>
</foods>
<set of='nice things' cardinality='all'/>
</girl> |