Я пытаюсь проанализировать xml-файл (у меня также есть определение схемы в xsd) в моей программе на c ++ с использованием библиотеки xerces. Для начала я написал небольшую программу, в которой я просто инициализирую std :: unique_pointer файлом xml. Я получаю следующую ошибку, если при инициализации использую объект std :: string, содержащий файл xml, тогда как программа работает нормально, если я использую файл xml напрямую для инициализации.
Основная программа выглядит следующим образом:
#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;
}
Когда я заменяю std::unique_ptr<tSh_Data> Shdata(Sh_Data(xml_file));
на std::unique_ptr<tSh_Data> Shdata(Sh_Data(argv[1]));
, тогда программа работает нормально (я указываю путь к XML-файлу в качестве ввода командной строки.)
Я получаю следующую ошибку:
Exception caught
:0:0 error: unable to open primary document entity '/home/vishal/UDA_XML/<?xml version="1.0"?>
За указанным выше сообщением об ошибке следует файл xml.