public static void bindDictionaryToElement(Dictionary dict, Document doc, Element element) { for (Map.Entry<String, Object> entry : dict) { String k = entry.getKey(); Object v = entry.getValue(); Element key = doc.createElement("key"); key.appendChild(doc.createTextNode(k)); element.appendChild(key); if (v instanceof String) { Element value = doc.createElement("string"); value.appendChild(doc.createTextNode(v.toString())); element.appendChild(value); } else if (v instanceof Integer) { Element value = doc.createElement("integer"); value.appendChild(doc.createTextNode(((Integer) v).toString())); element.appendChild(value); } else if (v instanceof Boolean) { Element value = doc.createElement("boolean"); value.appendChild(doc.createTextNode(((Boolean) v).toString())); element.appendChild(value); } else if (v instanceof List<?>) { Element value = doc.createElement("list"); ListParser.bindListToElement((List<Object>) v, doc, value); element.appendChild(value); } else if (v instanceof Dictionary) { Element value = doc.createElement("dict"); bindDictionaryToElement((Dictionary) v, doc, value); element.appendChild(value); } } }