code: function model (xml) {
    var path = ''
    var cache = {}
    xml = xml && typeof xml === 'string' ? xml.replace(/[\n\r]/gi, '') : ''
  
    return {
      tagValue: (tag, attribute) => {
        if (!Array.isArray(tag)) {
          tag = [tag]
        }
  
        path = tag.join('_') + '_' + (attribute || '')
  
        if (typeof cache[path] === 'undefined') {
          cache[path] = extract(xml, tag, attribute)
          if (typeof cache[path] === 'string' && hasTags(cache[path])) {
            cache[path] = model(cache[path])
          }
        }
  
        return cache[path]
      },
      tagGroup: (tag) => {
        return extractGroup(xml, tag)
      }
    }
  }
docs: Return the xml object model based on <xml> specified.
  
  @param      {string}  xml     The xml
  @return     {Object}  {tagValue(), tagGroup()}