Extracting Data From a Document's Tree Structure : rexml « XML « Ruby






Extracting Data From a Document's Tree Structure


orders_xml = %{
<orders>
  <order>
    <number>1</number>
    <date>02/10/2008</date>
    <customer>C</customer>
    <items>
      <item upc="0" desc="Roses" qty="240" />
      <item upc="1" desc="Candy" qty="160" />
    </items>
  </order>
</orders>}

require 'rexml/document'
orders = REXML::Document.new(orders_xml)
orders.root.each_element do |order|     # each <order> in <orders>
  order.each_element do |node|          # <customer>, <items>, etc. in <order>
    if node.has_elements?
      node.each_element do |child|      # each <item> in <items>
        puts "#{child.name}: #{child.attributes['desc']}"
      end
    else
      # the contents of <number>, <date>, etc.
      puts "#{node.name}: #{node.text}"
    end
  end
end

 








Related examples in the same category

1.REXML is already part of Ruby, you get it free of charge.
2.A basic demonstration of parsing an XML file looking for certain elements:
3.Use rexml to read xml file
4.Checking XML Well-Formedness
5.Get the first element under root
6.Output xml with REXML
7.Extracting Data While Parsing a Document
8.get a Node from xml document
9.Entity Substituter
10.Assign new value to node
11.Creating and Modifying XML Documents
12.Add new element
13.Compressing Whitespace in an XML Document
14.Compress whitespace only in anchor
15.Leave whitespace for anchor
16.Compress new line character
17.require 'rexml/document'