#include "dbxml/DbXml.hpp" #include #include #include using namespace DbXml; // exception handling omitted for clarity int main(void) { 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; } // Do BDB XML work here // Open an XmlManager. XmlManager myManager; // Create and open the container. XmlContainer myContainer1 = myManager.openContainer("EPEC_fsak.bdbxml"); std::cout << "galdera bat exekutatzen\n"; XmlQueryContext theContext = myManager.createQueryContext(); try { std::string query = "collection('EPEC_fsak.bdbxml')/fs[f[@name=\"goimailako-ezaugarriak\"]/fs[@type=\"goimailako-ezaugarri-lista\"]/f[@name=\"AZP\"]/sym[@value=\"ERKARR\"]]/@id"; XmlQueryExpression qe = myManager.prepare(query, theContext); XmlResults results = qe.execute(theContext); std::cout << "Found " << results.size() << " documents for query: '" << query << "'" << 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; } 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); }