Как я могу создать элемент 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()
метод. Предположительно, вы захотите добавить новые элементы к существующему элементу, чтобы вы могли использовать этот метод, чтобы получить ссылку на документ родительского элемента и создать оттуда новый элемент.