5
#include "XmlDatabase.h"
10
XmlDatabase::XmlDatabase(const std::string &db_path,
11
const std::string &db_name)
13
container_ = new Arc::XmlContainer(db_path, db_name);
16
XmlDatabase::~XmlDatabase(void)
22
XmlDatabase::put(const std::string &name, const std::string &content)
24
container_->put(name, content);
28
XmlDatabase::put(const std::string &name, Arc::XMLNode &doc)
32
container_->put(name, content);
36
XmlDatabase::get(const std::string &name, Arc::XMLNode &doc)
38
std::string content = container_->get(name);
39
if (!content.empty()) {
40
Arc::XMLNode nn(content);
46
XmlDatabase::del(const std::string &name)
48
container_->del(name);
52
XmlDatabase::query(const std::string &name, const std::string &q)
56
return node.XPathLookup(q, node.Namespaces());
60
XmlDatabase::queryAll(const std::string &q,
61
std::map<std::string, Arc::XMLNodeList> &result)
63
std::vector<std::string> doc_names = container_->get_doc_names();
65
for (int i = 0; i < doc_names.size(); i++) {
66
Arc::XMLNodeList r = query(doc_names[i], q);
67
result[doc_names[i]] = r;
72
XmlDatabase::update(const std::string& /* name */, const std::string& /* query */,
73
Arc::XMLNode& /* new_value */)
75
container_->start_update();
77
// parse content to XMLNode
79
// replace query result nodes with new_value
80
// get the new document as string
81
// put the content back to container
82
container_->end_update();
86
XmlDatabase::checkpoint()
88
container_->checkpoint();