import java.io.*;
import java.util.HashMap;
import java.util.Map;
public class HtmlSerializer {
private static final String VALID_TAGS = "<html><body><head><title></title></head><body><h1></h1><p></p><br><hr></body></html>"; // Basic validation
private static final String TAG_OPEN_REGEX = "<([a-zA-Z]+)";
private static final String TAG_CLOSE_REGEX = "</([a-zA-Z]+)>";
private static final String COMMENT_REGEX = "<!--.*?-->";
public static String serializeHtml(Object obj) {
if (obj == null) {
return "<p>Null object</p>"; //Handle null input
}
try {
return serialize(obj, 0);
} catch (Exception e) {
return "<p>Error serializing object: " + e.getMessage() + "</p>";
}
}
private static String serialize(Object obj, int indent) throws Exception {
StringBuilder sb = new StringBuilder();
if (obj instanceof String) {
String str = (String) obj;
sb.append(" ").append(str).append("\n"); //Indent string content
} else if (obj instanceof Integer || obj instanceof Double || obj instanceof Boolean) {
sb.append(" ").append(obj).append("\n"); //Indent primitive types
} else if (obj instanceof HTMLPage) {
HTMLPage page = (HTMLPage) obj;
sb.append(" ").append(page.getTag()).append("\n");
for (int i = 0; i < indent + 4; i++) {
sb.append(" ");
}
sb.append(serialize(page.getContent(), indent + 4));
sb.append(" ").append("</").append(page.getTag()).append(">\n");
}
else if (obj == null) {
sb.append(" <null>\n");
}
else {
throw new IllegalArgumentException("Unsupported object type: " + obj.getClass().getName());
}
return sb.toString();
}
public static class HTMLPage {
private String tag;
private String content;
public HTMLPage(String tag, String content) {
this.tag = tag;
this.content = content;
}
public String getTag() {
return tag;
}
public String getContent() {
return content;
}
}
public static void main(String[] args) {
//Example Usage
HTMLPage page = new HTMLPage("html", "<head><title>Test</title></head><body><h1>Hello</h1><p>World</p></body></html>");
String serializedHtml = serializeHtml(page);
System.out.println(serializedHtml);
String simpleString = "This is a test string";
String serializedString = serializeHtml(simpleString);
System.out.println(serializedString);
Integer number = 123;
String serializedNumber = serializeHtml(number);
System.out.println(serializedNumber);
Object nullObject = null;
String serializedNull = serializeHtml(nullObject);
System.out.println(serializedNull);
}
}
Add your comment