Как я могу создать элемент DOM без документа?

Работая с JAXP, "Hello world" для создания элемента:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.newDocument();

Element e = doc.createElement("helloElement");
// attributes, append, etc...

это делает создание элемента зависимым от объекта документа. Есть ли способ создать элемент без определенного документа? что-то вроде:

Element e = DomDocument.createElement("helloElement"); //static method or so ...
return e;

Реализация интерфейса Element - это слишком много, чем нужно!

цель состоит в том, чтобы получить элемент DOM из POJO без необходимости передавать документ какие-либо предложения?

2 ответа

Решение

Есть ли способ создать элемент без определенного документа?

Нет. То, как DOM разработан Document является фабрикой для всех других объектов, и эти объекты могут существовать только в контексте определенного Document, Таким образом, вы уже используете правильный подход, создавая пустой документ из DocumentBuilder,

цель состоит в том, чтобы получить элемент DOM из POJO без необходимости передавать документ

Вы можете создать свой собственный Document внутри POJO и использовать его для создания элементов, но затем, если вызывающий ваш метод хочет добавить возвращаемый Element к своим собственным Document сначала они должны будут "принять" его, позвонив adoptNode, как Document разрешено содержать только те узлы, которые ему принадлежат.

Выглядит какNode(которыйElementрасширяется) обеспечиваетgetOwnerDocument()метод. Предположительно, вы захотите добавить новые элементы к существующему элементу, чтобы вы могли использовать этот метод, чтобы получить ссылку на документ родительского элемента и создать оттуда новый элемент.

Другие вопросы по тегам