#include "dbxml/DbXml.hpp" #include #include #include using namespace DbXml; // exception handling omitted for clarity int main(int argc, char * argv[]) { if (argc < 3){ std::cout << "galdera pasatu behar diozu" << std::endl; exit(0); } bool verbose = false; if (argc == 4) verbose = true; std::string galdera = argv[2]; std::string edukiontzia = argv[1]; u_int32_t env_flags = DB_CREATE | // If the environment does not // exist, create it. DB_INIT_LOCK | // Initialize the locking subsystem DB_INIT_LOG | // Initialize the logging subsystem DB_INIT_MPOOL | // Initialize the cache DB_INIT_TXN; // Initialize transactions std::string envHome("/data2/export/testEnv"); DbEnv myEnv(0); try { myEnv.open(envHome.c_str(), env_flags, 0); } catch(DbException &e) { std::cerr << "1) Error opening database environment: " << envHome << std::endl; std::cerr << e.what() << std::endl; } catch(std::exception &e) { std::cerr << "2) Error opening database environment: " << envHome << std::endl; std::cerr << e.what() << std::endl; } // Open an XmlManager. XmlManager myManager; // Create and open the container. XmlContainer myContainer1 = myManager.openContainer(edukiontzia); std::cout << "galdera bat exekutatzen\n"; XmlQueryContext theContext = myManager.createQueryContext(); try { XmlQueryExpression qe = myManager.prepare(galdera, theContext); XmlResults results = qe.execute(theContext); std::cout << "Found " << results.size() << " documents for query: '" << galdera << "'" << std::endl; if (verbose == true){ XmlValue value; int i = 0; while (results.next(value)) { i++; XmlDocument theDoc = value.asDocument(); std::string docName = theDoc.getName(); std::string docString = value.asString(); //std::cout << "Document " << docName << ":" << std::endl; std::cout << docString << std::endl; //std::cout << "===============================\n" << std::endl; } std::cout << "Emaitza kopurua:" << i << std::endl; } XmlContainer::ContainerType container = myContainer1.getContainerType(); if (container==XmlContainer::NodeContainer) std::cout << "nodo modukoa da" << std::endl; } catch (XmlException &e) { std::cerr << "***errorea eguneraketa egitean" << std::endl << e.what()<< std::endl; // Error handling goes here. You may want to check // for XmlException::UNIQUE_ERROR, which is raised // if a document with that name already exists in // the container. If this exception is thrown, // try the put again with a different name, or // use XmlModify to update the document. } try { myEnv.close(0); } catch(DbException &e) { std::cerr << "1) Error closing database environment: " << envHome << std::endl; std::cerr << e.what() << std::endl; } catch(std::exception &e) { std::cerr << "2) Error closing database environment: " << envHome << std::endl; std::cerr << e.what() << std::endl; } std::cout << "bukatu da" << std::endl; return (0); }