private List<Span> readSpans(File file) {
    final List<Span> spans = Lists.newArrayList();

    try {
      final DocumentBuilder builder = factory.newDocumentBuilder();

      final Document document = builder.parse(file);
      final Element root = document.getDocumentElement();
      final NodeList nodes = root.getElementsByTagName("span");

      for (int i = 0; i < nodes.getLength(); i++) {
        final Element element = Element.class.cast(nodes.item(i));

        final Span span = new Span();

        span.setType(element.getAttribute("type"));
        span.setStart(Integer.parseInt(element.getAttribute("start")));
        span.setEnd(Integer.parseInt(element.getAttribute("end")));
        span.setValue(element.getTextContent());

        spans.add(span);
      }
    } catch (IOException e) {
      throw new IllegalStateException(e);
    } catch (ParserConfigurationException e) {
      throw new IllegalStateException(e);
    } catch (SAXException e) {
      throw new IllegalStateException(e);
    }

    return spans;
  }