1. import java.util.HashMap;
  2. import java.util.Map;
  3. public class DOMEncoder {
  4. public static String encodeDOM(Map<String, Object> dom) {
  5. StringBuilder encoded = new StringBuilder();
  6. for (Map.Entry<String, Object> entry : dom.entrySet()) {
  7. String key = entry.getKey();
  8. Object value = entry.getValue();
  9. if (value instanceof String) {
  10. // String: Escape special characters
  11. String str = (String) value;
  12. String encodedStr = str.replace("\\", "\\\\").replace("\"", "\\\""); //Basic escaping
  13. encoded.append("\"").append(encodedStr).append("\"\n"); // Wrap in quotes
  14. } else if (value instanceof Number) {
  15. // Number: Convert to string
  16. encoded.append(value.toString()).append("\n");
  17. } else if (value == null) {
  18. encoded.append("null\n");
  19. } else if (value instanceof Boolean) {
  20. encoded.append(value.toString()).append("\n");
  21. } else if (value instanceof Map) {
  22. // Recursive call for nested maps
  23. encoded.append("{");
  24. boolean first = true;
  25. for (Map.Entry<String, Object> nestedEntry : ((Map<String, Object>) value).entrySet()) {
  26. if (!first) {
  27. encoded.append(",");
  28. }
  29. encoded.append("\"").append(nestedEntry.getKey()).append("\":").append(encodeDOM(Map.of(nestedEntry.getKey(), nestedEntry.getValue()))).append("\n");
  30. first = false;
  31. }
  32. encoded.append("}\n");
  33. } else if (value instanceof List) {
  34. //List: Encode each element in the list
  35. encoded.append("[");
  36. boolean first = true;
  37. for (Object element : (List<Object>) value) {
  38. if (!first) {
  39. encoded.append(",");
  40. }
  41. encoded.append(encodeDOM(Map.of("value",element))); //Encode each element
  42. first = false;
  43. }
  44. encoded.append("]\n");
  45. }
  46. }
  47. return encoded.toString();
  48. }
  49. public static void main(String[] args) {
  50. // Example DOM structure
  51. Map<String, Object> dom = new HashMap<>();
  52. dom.put("name", "John Doe");
  53. dom.put("age", 30);
  54. dom.put("city", "New York");
  55. dom.put("address", new HashMap<>());
  56. dom.get("address").put("street", "123 Main St");
  57. dom.get("address").put("zip", "10001");
  58. dom.put("hobbies", new java.util.ArrayList<>());
  59. dom.get("hobbies").add("reading");
  60. dom.get("hobbies").add("coding");
  61. String encodedString = encodeDOM(dom);
  62. System.out.println(encodedString);
  63. }
  64. }

Add your comment