def Interchange.parse_xml( xdoc )
_root = xdoc.root
_header = _root.elements["Header"]
_trailer = _root.elements["Trailer"]
_una = _header.elements["Parameter[@name='UNA']"]
_una = _una.text if _una
raise "Empty UNA" if _una and _una.empty?
_s001 = _header.elements["Segment/CDE[@name='S001']"]
_version = _s001.elements["DE[@name='0002']"].text.to_i
_charset = _s001.elements["DE[@name='0001']"].text
params = { :charset => _charset, :version => _version }
if _una
params[:una_string] = _una
params[:show_una] = true
end
ic = Interchange.new( params )
if _root.elements["Message"].nil?
_root.elements.each('MsgGroup') do |xel|
ic.add( MsgGroup.parse_xml( ic, xel ), false )
end
else
_root.elements.each('Message') do |xel|
ic.add( Message.parse_xml( ic, xel ), false )
end
end
ic.header = Segment.parse_xml( ic, _header.elements["Segment"] )
ic.trailer = Segment.parse_xml( ic, _trailer.elements["Segment"] )
ic.validate
ic
end