# File lib/edi4r/edifact-rexml.rb, line 31
    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? # remove later!
      # S001: Works for both batch and interactive EDI:
      _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? # correct ??
        _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