📄 08 - creating and modifying xml documents.rb
字号:
require 'rexml/document'requiredoc = 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> ... </>doc.children[0].children[0] # => "<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>doc.children[0] # => <?xml ... ?>doc.children[1] # => <meeting> ... </>#---agenda = meeting.add_element 'agenda'doc.children[1].children[1] # => <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> ... </>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>#---item1 = agenda.add_element 'item'doc.children[1].children[1].children[1] # => <item/>item1.text = 'Weekly status meetings: improving attendance'doc.children[1].children[1].children[1] # => <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>#---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'> ... </>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>#---root.attributes['size'] = nildoc.write($stdout, 0)# <?xml version='1.0'?># <boy># <foods># ...# </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? endend #---doc = REXML::Document.newdoc.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'})enddoc.write($stdout, 0)# <girl size='little'># <foods># <sugar/># <spice/># </foods># <set of='nice things' cardinality='all'/># </girl>#---
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -