Java: может ли db4o хранить org.w3c.dom.Node?

#java #dom #db4o

#java #dom #db4o

Вопрос:

Возможно ли org.w3c.dom.Node org.w3c.dom.NodeList также хранить и?

 public DocumentElement {
private String name;
private Node thisNode;
private NodeList thisList;
}
  

Если нет, возможно ли сериализовать Node or NodeList в JSON или String для хранилища db4o?

существует ли список поддерживаемых типов данных для сохранения с db4o? Я не смог найти его в документации.

Ответ №1:

В общем, нет. Узлы имеют смысл только в контексте их документа. Но что вы можете сделать, это сгенерировать представление документа в виде строки и сохранить его. (Я делаю это, когда мне нужно сохранить XML в базе данных, за исключением того, что я сохраняю его после сжатия; это нормально для моего приложения, потому что это не поле, в которое БД должна иметь возможность заглядывать.)

Комментарии:

1. Да. Возможно, хранение и загрузка даже работают. Однако, поскольку у вас нет контроля над реализацией w3c-dom, вы не можете предсказать, сможете ли вы загрузить ее снова с другой версией библиотеки. Вы должны создать свое собственное представление узла и сохранить его.

2. DOM в значительной степени задан таким образом, что вы можете сериализовать только целые документы (в частности, вы можете запросить у узла его родительский узел). Хранение документа четко определено (на самом деле это просто забавная строка). Вы также можете создавать новые документы с копиями некоторого набора узлов; это довольно стандартная манипуляция с XML.

3. Ну, конечно, db4o также будет хранить документ, на который есть ссылка (если он вообще работает). В любом случае, хранить его напрямую — плохая идея.