Вы не указываете, зачем вам это нужно, но похоже, что вы хотите программно создать веб-сайт, в частности, вы хотите, чтобы он был основан на компонентах, чтобы каждый класс инкапсулировал функцию соответствующего тега.
Есть два пути, один из которых - это готовые веб-фреймворки, основанные на компонентах, которые являются предпочтительным способом, так как в этих вещах уже есть много вещей, продуманных и реализованных для вас. Например, Apache Wicket , Apache Tapestry и Google Web Toolkit - все они основаны только на некоторых компонентах.
Другой способ, которым вы можете подойти к этому, - бросить свой собственный. В этом случае вы, скорее всего, потеряете большую гибкость, обеспечиваемую вышеупомянутыми платформами, но опять же, у вас есть кусок кода, который будет делать именно то, что вы хотите. Итак, для того, чтобы выкатить свою собственную именно для той цели, о которой вы упомянули, я бы сделал следующее:
- Возьмите любую библиотеку DOM-манипуляций, такую как JDOM , DOM4J , XOM и т. Д. Конечно, вы также можете использовать нативную библиотеку Java, но в основном это огромная библиотека. боль в заднице, чтобы использовать широко.
- Напишите фабричные методы / классы-оболочки для каждого отдельного тега, например изображения. Например, это может быть содержимое класса Image с использованием JDOM:
.
public interface MyElement<T extends org.jdom.Content> {
T getElement();
}
public class Image implements MyElement<org.jdom.Element> {
private final String source;
public Image(String source) {
this.source = source;
}
public org.jdom.Element getElement() {
return new Element("img").setAttribute("src", source);
}
}
и в некотором классе компонентов, описывающем всю страницу, вы затем добавляете экземпляр этого класса в структуру списка / дерева, а затем просто, наконец, вызываете getElement () для получения разметки, специфичной для тега, где это применимо. Обратите внимание, что это намного сложнее, чем кажется, в основном из-за необходимой вложенной структуры XML.