public static Dictionary getDictionaryFromElement(Element element) {
    Dictionary ret = new Dictionary();

    NodeList l = element.getChildNodes();
    String lastKey = "";

    for (int i = 0; i < l.getLength(); ++i) {
      Node node = l.item(i);

      if ("key".equalsIgnoreCase(node.getNodeName())) {
        lastKey = node.getTextContent();
        continue;
      } else if ("string".equalsIgnoreCase(node.getNodeName())) {
        if (!lastKey.equals("")) {
          ret.put(lastKey, node.getTextContent());
        }

        continue;
      } else if ("integer".equalsIgnoreCase(node.getNodeName())) {
        if (!lastKey.equals("")) {
          ret.put(lastKey, Integer.parseInt(node.getTextContent()));
        }

        continue;
      } else if ("boolean".equalsIgnoreCase(node.getNodeName())) {
        if (!lastKey.equals("")) {
          ret.put(lastKey, Boolean.parseBoolean(node.getTextContent()));
        }

        continue;
      } else if ("list".equalsIgnoreCase(node.getNodeName())) {
        if (!lastKey.equals("")) {
          ret.put(lastKey, ListParser.getListFromElement((Element) node));
        }

        continue;
      } else if ("dict".equalsIgnoreCase(node.getNodeName())) {
        if (!lastKey.equals("")) {
          ret.put(lastKey, getDictionaryFromElement((Element) node));
        }

        continue;
      }
    }

    return ret;
  }