import java.util.HashMap;
import java.util.Map;
public class DOMEncoder {
public static String encodeDOM(Map<String, Object> dom) {
StringBuilder encoded = new StringBuilder();
for (Map.Entry<String, Object> entry : dom.entrySet()) {
String key = entry.getKey();
Object value = entry.getValue();
if (value instanceof String) {
// String: Escape special characters
String str = (String) value;
String encodedStr = str.replace("\\", "\\\\").replace("\"", "\\\""); //Basic escaping
encoded.append("\"").append(encodedStr).append("\"\n"); // Wrap in quotes
} else if (value instanceof Number) {
// Number: Convert to string
encoded.append(value.toString()).append("\n");
} else if (value == null) {
encoded.append("null\n");
} else if (value instanceof Boolean) {
encoded.append(value.toString()).append("\n");
} else if (value instanceof Map) {
// Recursive call for nested maps
encoded.append("{");
boolean first = true;
for (Map.Entry<String, Object> nestedEntry : ((Map<String, Object>) value).entrySet()) {
if (!first) {
encoded.append(",");
}
encoded.append("\"").append(nestedEntry.getKey()).append("\":").append(encodeDOM(Map.of(nestedEntry.getKey(), nestedEntry.getValue()))).append("\n");
first = false;
}
encoded.append("}\n");
} else if (value instanceof List) {
//List: Encode each element in the list
encoded.append("[");
boolean first = true;
for (Object element : (List<Object>) value) {
if (!first) {
encoded.append(",");
}
encoded.append(encodeDOM(Map.of("value",element))); //Encode each element
first = false;
}
encoded.append("]\n");
}
}
return encoded.toString();
}
public static void main(String[] args) {
// Example DOM structure
Map<String, Object> dom = new HashMap<>();
dom.put("name", "John Doe");
dom.put("age", 30);
dom.put("city", "New York");
dom.put("address", new HashMap<>());
dom.get("address").put("street", "123 Main St");
dom.get("address").put("zip", "10001");
dom.put("hobbies", new java.util.ArrayList<>());
dom.get("hobbies").add("reading");
dom.get("hobbies").add("coding");
String encodedString = encodeDOM(dom);
System.out.println(encodedString);
}
}
Add your comment