mardi 18 septembre 2018

Error: unable to open primary document entity

I'm trying to parse an xml file(I've got the schema definition in xsd as well) in my c++ program using xerces library. To get things started I've written a small program, where I just initialise the std::unique_pointer with the xml file. I get the following error if I use an std::string object containing the xml file while initialising whereas the program runs fine if I use the xml file directly for initialisation.

The main program is as follows:

#include <stdio.h>
#include <iostream>
#include "ShDataTypeRel15.hxx"
#include<fstream>
#include<string>

using namespace std;

int main (int argc, char* argv[])
{
   try
    {

fstream t("/home/vishal/UDA_XML/ShDataTypeRel15.xml", ios::in);
stringstream buffer;
buffer << t.rdbuf();

std::string xml_file = buffer.str();

        std::unique_ptr<tSh_Data> Shdata(Sh_Data(xml_file));

    }
      catch (const xml_schema::exception& e)
      {
              cout <<"Exception caught"<<std::endl;
          std::cerr << e << std::endl;
          return 1;
      }


return 0;
}

When I replace std::unique_ptr<tSh_Data> Shdata(Sh_Data(xml_file)); with std::unique_ptr<tSh_Data> Shdata(Sh_Data(argv[1])); then the program runs fine(I provide the path to the xml file as command line input.)

I get the following error:

Exception caught
:0:0 error: unable to open primary document entity '/home/vishal/UDA_XML/<?xml version="1.0"?>

The above error statement is followed by the xml file.

Aucun commentaire:

Enregistrer un commentaire