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