public List<GeoIPv4Adress> parse(File file) throws IOException, XMLStreamException
  {
    FileInputStream in = new FileInputStream(file);
    XMLEventReader eventReader = factory.createXMLEventReader(in);
    while(eventReader.hasNext())
    {
      XMLEvent xmlEvent = eventReader.nextEvent();
      switch(xmlEvent.getEventType())
      {
        case XMLStreamConstants.START_DOCUMENT:
          init();
          break;
        case XMLStreamConstants.START_ELEMENT:
          processStartElement(xmlEvent.asStartElement());
          break;
        case XMLStreamConstants.CHARACTERS:
          processCharacters(xmlEvent.asCharacters());
          break;
        case XMLStreamConstants.END_ELEMENT:
          processEndElement(xmlEvent.asEndElement());
          break;
        case XMLStreamConstants.END_DOCUMENT:
          cleanup();
          break;
      }
    }
    List<GeoIPv4Adress> result = adresses;
    adresses = null;
    return result;
  }