require 'rexml/document'
require 'builder'
include REXML
docb = Document.new("123 jim 33 fred 37 jane 42 ")
docc = Document.new("456 jim 33 Mary 32 joe 50 ")
a, b = [docb,docc].map do |doc|
XPath.match(doc.root, 'records/item').map do |item|
item.elements.map {|node| node.text.to_s}
end
end
rec_name = XPath.first(docc.root, 'records/item[1]').name
fields = XPath.match(docc.root, 'records/item[1]/*').map(&:name)
c = b - a
xml = Builder::XmlMarkup.new( :target => buffer='', :indent => 2 )
xml.instruct! :xml, :version => "1.0", :encoding => "UTF-8"
xml.result do
xml.summary do
XPath.each(docc.root, 'summary/*'){|x| xml.send x.name, x.text}
end
xml.records do
c.each do |x|
xml.send rec_name do
fields.zip(x).each do |field, value|
xml.send field, value
end
end
end
end
end
puts buffer
456
Mary
32
joe
50
alias dif="rcscript //job:diff http://rorbuilder.info/r/dynarex.rsf"
Read more: http://feeds.dzone.com/~r/dzone/snippets/~3/eanVSNH-IGk/10751