Re: [bdbxml] problem validating in c++

George Feinberg <[email protected]>
Newsgroups gmane.comp.db.dbxml.general
Message-ID <[email protected]>
John,

You need to add a flags field with DBXML_ALLOW_EXTERNAL_ACCESS to your
XmlManager constructor.

Regards,

George

> Hi,
>
> I am having problems validating an xml file using a schema when I  
> write a small c++ program to open a container in validation mode  
> and then add a document to the container. Whenever i add the xml  
> document to the container I get an error that says "Exception:  
> Error: XML Indexer: Fatal Parse error in document at line 5. char  
> 97. Parse message: An exception occurred! Type:RuntimeException,  
> Message: could not open external entity.". Line 5 is the line  
> containing the schemalocation attribute in my xml document. I know  
> the document and schema are sound as i have validated them using an  
> xml validator. When I open the container and enter the document  
> using the command line instead of a c++ program the operation works  
> perfectly. Below is the code I am using.
> Any help would be greatly appreciated.
>
> Thanks,
>
> John
>
> #include <string>
> #include <fstream>
> #include "dbxml/DbXml.hpp"
> using namespace std;
> using namespace DbXml;
> int main(int argc, char *argv[]) {
>  try {
>
>    XmlInputStream * input = NULL;
>    string path2DbEnv = "c:/env";
>    string theContainer = "simpleExampleData.dbxml";
>    string docName = "John2";
>
>    //open a container in the db environment
>    DbEnv env(0);
>    env.set_cachesize(0, 64 * 1024 * 1024, 1);
>    env.open(path2DbEnv.c_str(),
>     DB_INIT_MPOOL|DB_CREATE|DB_INIT_LOCK|DB_INIT_LOG|DB_INIT_TXN, 0);
>    XmlManager db(&env);
>
>    XmlContainer container = db.openContainer(theContainer,  
> DBXML_ALLOW_VALIDATION);
>
>    XmlUpdateContext updateContext = db.createUpdateContext();
>
>    //create input
>
>    input = db.createLocalFileInputStream("c:/shiporder1.xml");
>
>    container.putDocument(docName, input, updateContext, 0);
>    XmlUpdateContext uc = db.createUpdateContext();
>
>
>   } catch (XmlException &e) {
>   std::cout << "Exception: " << e.what() << std::endl;
>   }
>  return 0;
> }
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.