I am parsing below xml file using BOOST library-
<da>
<m_day Type="int">15</m_day>
<m_month Type="int">8</m_month>
<m_year Type="int">1947</m_year>
</da>
My cpp code is :
#include <boost/archive/xml_oarchive.hpp>
#include <boost/archive/xml_iarchive.hpp>
#include <iostream>
#include <fstream>
typedef struct date {
unsigned int m_day;
unsigned int m_month;
unsigned int m_year;
date( int d, int m, int y) : m_day(d), m_month(m), m_year(y)
{}
date() : m_day(1), m_month(1), m_year(2000)
{}
friend std::ostream& operator << (std::ostream& out, date& d)
{
out << "day: " << d.m_day
<< " month: " << d.m_month
<< " year: " << d.m_year;
return out;
}
template<class Archive>
void serialize(Archive& archive, const unsigned int version)
{
archive & BOOST_SERIALIZATION_NVP(m_day);
archive & BOOST_SERIALIZATION_NVP(m_month);
archive & BOOST_SERIALIZATION_NVP(m_year);
}
} date;
BOOST_CLASS_IMPLEMENTATION(date, boost::serialization::object_serializable);//object_serializable);
unsigned int flags = boost::archive::no_header;
int main()
{
std::ifstream file1("archive.xml");
boost::archive::xml_iarchive ia(file1,flags);
date dr;
ia >> BOOST_SERIALIZATION_NVP(dr);
std::ofstream file("archive2.xml");
boost::archive::xml_oarchive oa(file,flags);
// date da(15, 8, 1947);
oa & BOOST_SERIALIZATION_NVP(dr);
return 0;
}
I am getting below error :
terminate called after throwing an instance of 'boost::archive::archive_exception'
what(): input stream error
Aborted (core dumped)
for Normal xml without attributes(as mentioned below) the above code is working fine
<da>
<m_day>15</m_day>
<m_month>8</m_month>
<m_year>1947</m_year>
</da>
But for previous xml file ,Is there any problem in code ? could you please let me know if it is possible with boost.i have searched so much to find the answer but failed to get any.
Thanks in Advance !!!
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…