'@return hosts A list of Host instances'

def get_items(self, tree, vulns):

    hosts = list()
    for nodes in tree.iter('nodes'):
        for node in nodes.iter('node'):
            host = dict()
            host['name'] = node.get('address')
            host['hostnames'] = set()
            host['os'] = ''
            host['services'] = list()
            host['vulns'] = self.parse_tests_type(node, vulns)
            for names in node.iter('names'):
                for name in list(names):
                    host['hostnames'].add(name.text)
            for fingerprints in node.iter('fingerprints'):
                os = fingerprints.find('os')
                if (os is not None):
                    host['os'] = os.get('product', '')
                    if (os.get('version') is not None):
                        host['os'] += ('    ' + os.get('version'))
            for endpoints in node.iter('endpoints'):
                for endpoint in list(endpoints):
                    svc = {'protocol': endpoint.get('protocol'), 'port': endpoint.get('port'), 'status': endpoint.get('status')}
                    for services in endpoint.iter('services'):
                        for service in list(services):
                            svc['name'] = service.get('name')
                            svc['vulns'] = self.parse_tests_type(service, vulns)
                            for configs in service.iter('configurations'):
                                for config in list(configs):
                                    if ('banner' in config.get('name')):
                                        svc['version'] = config.get('name')
                    host['services'].append(svc)
            hosts.append(host)
    return hosts
