public String toString() { StringBuilder builder = new StringBuilder(); builder.append("<"); builder.append(name); for (Map.Entry<Object, Object> entry : attributes.entrySet()) { builder.append(" "); builder.append(entry.getKey()); builder.append("=\""); builder.append(entry.getValue()); builder.append("\""); } List<XNode> children = getChildren(); if (children.size() > 0) { builder.append(">\n"); for (XNode node : children) { builder.append(node.toString()); } builder.append("</"); builder.append(name); builder.append(">"); } else if (body != null) { builder.append(">"); builder.append(body); builder.append("</"); builder.append(name); builder.append(">"); } else { builder.append("/>"); } builder.append("\n"); return builder.toString(); }