1. import java.io.*;
  2. import java.util.HashMap;
  3. import java.util.Map;
  4. public class HtmlSerializer {
  5. private static final String VALID_TAGS = "<html><body><head><title></title></head><body><h1></h1><p></p><br><hr></body></html>"; // Basic validation
  6. private static final String TAG_OPEN_REGEX = "<([a-zA-Z]+)";
  7. private static final String TAG_CLOSE_REGEX = "</([a-zA-Z]+)>";
  8. private static final String COMMENT_REGEX = "<!--.*?-->";
  9. public static String serializeHtml(Object obj) {
  10. if (obj == null) {
  11. return "<p>Null object</p>"; //Handle null input
  12. }
  13. try {
  14. return serialize(obj, 0);
  15. } catch (Exception e) {
  16. return "<p>Error serializing object: " + e.getMessage() + "</p>";
  17. }
  18. }
  19. private static String serialize(Object obj, int indent) throws Exception {
  20. StringBuilder sb = new StringBuilder();
  21. if (obj instanceof String) {
  22. String str = (String) obj;
  23. sb.append(" ").append(str).append("\n"); //Indent string content
  24. } else if (obj instanceof Integer || obj instanceof Double || obj instanceof Boolean) {
  25. sb.append(" ").append(obj).append("\n"); //Indent primitive types
  26. } else if (obj instanceof HTMLPage) {
  27. HTMLPage page = (HTMLPage) obj;
  28. sb.append(" ").append(page.getTag()).append("\n");
  29. for (int i = 0; i < indent + 4; i++) {
  30. sb.append(" ");
  31. }
  32. sb.append(serialize(page.getContent(), indent + 4));
  33. sb.append(" ").append("</").append(page.getTag()).append(">\n");
  34. }
  35. else if (obj == null) {
  36. sb.append(" <null>\n");
  37. }
  38. else {
  39. throw new IllegalArgumentException("Unsupported object type: " + obj.getClass().getName());
  40. }
  41. return sb.toString();
  42. }
  43. public static class HTMLPage {
  44. private String tag;
  45. private String content;
  46. public HTMLPage(String tag, String content) {
  47. this.tag = tag;
  48. this.content = content;
  49. }
  50. public String getTag() {
  51. return tag;
  52. }
  53. public String getContent() {
  54. return content;
  55. }
  56. }
  57. public static void main(String[] args) {
  58. //Example Usage
  59. HTMLPage page = new HTMLPage("html", "<head><title>Test</title></head><body><h1>Hello</h1><p>World</p></body></html>");
  60. String serializedHtml = serializeHtml(page);
  61. System.out.println(serializedHtml);
  62. String simpleString = "This is a test string";
  63. String serializedString = serializeHtml(simpleString);
  64. System.out.println(serializedString);
  65. Integer number = 123;
  66. String serializedNumber = serializeHtml(number);
  67. System.out.println(serializedNumber);
  68. Object nullObject = null;
  69. String serializedNull = serializeHtml(nullObject);
  70. System.out.println(serializedNull);
  71. }
  72. }

Add your comment