Ich fange an, Boost :: Serialisierung in XML-Archiven zu verwenden. Ich kann Daten erzeugen und lesen, aber wenn ich das XML manuell modifiziere und zwei Tags vertausche, "scheitert es" (d. H. Es läuft glücklich ab).Warum überprüft boost :: serialization nicht nach Tag-Namen in XML-Archiven?
Hier ist eine kleine, in sich komplettes Beispiel zeigt, was ich sehe:
#include <iostream>
#include <fstream>
#include <boost/archive/xml_oarchive.hpp>
#include <boost/archive/xml_iarchive.hpp>
#include <boost/serialization/nvp.hpp>
#include <boost/serialization/split_member.hpp>
using namespace std;
int main (void)
{
boost::archive::xml_oarchive oa (cout);
static const string producer = "XXX", version = "0.0.1";
oa << boost::serialization::make_nvp ("producer", producer);
oa << boost::serialization::make_nvp ("producer_version", version);
}
Diese XML auf die Standardausgabe schreibt, die enthält:
<producer>XXX</producer>
<producer_version>0.0.1</producer_version>
Nun ersetze ich den gesamten Code in der Hauptfunktion mit einem Lesegerät:
funktioniert wie erwartet, wenn der vorherige Ausgang (Ausgänge "X XX 0.0.1 "). Wenn ich jedoch XML füttere, in dem ich die Reihenfolge der beiden Zeilen "Producer" und "Producer_Version" geändert habe, läuft es immer noch und gibt "0.0.1 XXX" aus.
Daher erkennt es nicht, dass die Tags nicht die erwarteten Namen haben, und fahren Sie einfach fort. Ich hätte erwartet, dass es eine xml_archive_parsing_error
Ausnahme ausgelöst hat, wie in the doc angegeben.
Hat jemand hier Erfahrung damit? Was mache ich falsch?
Irgendwie traurig, aber wenn es so ist. Danke für die Info (Ich fand diesen Dokumentabsatz besonders schwer zu lesen, aufgrund der übermäßigen Verwendung von Negation und Conditionals). –
...Darüber hinaus würde im Geiste der Bibliothek die Überprüfung der XML-Tag-Konsistenz als inakzeptable Leistungseinbuße betrachtet werden. Mit anderen Worten, XML-Tag in Boost-Serialisierung sind nur für Menschen, nicht für die Software. Es ist in der Tat zu Beginn kontra intuitiv und verwirrend, ich hätte eine Option bevorzugt, XML-Prüfung zu erlauben. – alfC