@Override
  public void startElement(
      final String namespaceURI,
      final String localName,
      final String qName,
      final Attributes attrs) {
    if ("testsuite".equals(qName)) {
      final TestSuite node = new TestSuite();
      node.setName(attrs.getValue("name"));

      final TestSuite parentNode = getParentTestSuite();
      if (parentNode != null) {
        parentNode.addTestNode(node);
        node.setParent(parentNode);
      }

      if (rootNode == null) {
        rootNode = node;
      }

      queue.add(node);
    } else if ("testcase".equals(qName)) {
      final TestCase node = new TestCase();
      node.setName(attrs.getValue("name"));
      node.setInternalId(Integer.parseInt(attrs.getValue("internalid")));

      final TestSuite parentNode = getParentTestSuite();
      if (parentNode != null) {
        parentNode.addTestNode(node);
        node.setParent(parentNode);
      }

      queue.add(node);
    } else if ("step".equals(qName)) {
      final TestStep node = new TestStep();

      final TestCase parentNode = getParentTestCase();
      if (parentNode != null) {
        parentNode.addTestStep(node);
        node.setParent(parentNode);
      }

      queue.add(node);
    } else if ("keyword".equals(qName)) {
      final TestNode testNode = getCurrentTestNode();
      if (testNode != null) {
        final String name = attrs.getValue("name");
        if (StringUtil.isNotBlank(name)) {
          testNode.addKeyword(name);
        }
      }

      queue.add(EMPTY_OBJ);
    } else if ("node_order".equals(qName) //
        || "details".equals(qName) //
        || "externalid".equals(qName) //
        || "version".equals(qName) //
        || "summary".equals(qName) //
        || "preconditions".equals(qName) //
        || "execution_type".equals(qName) //
        || "importance".equals(qName) //
        || "step_number".equals(qName) //
        || "actions".equals(qName) //
        || "expectedresults".equals(qName) //
        || "execution_type".equals(qName) //
    ) {
      queue.add(new StringBuilder(100));
    } else {
      queue.add(EMPTY_OBJ);
    }
    // TODO notes
  }