O
kommt drauf an, was du machen willst für normal reicht TinyXML. Aber du kannst damit keine werte validieren, formatieren(ausser int/double) oder auomatisch in ein objekt schreiben lassen. müsstest du also alles händisch schreiben.
ich könnte dir da auch nochwas bieten, müsste aber erstmal evilisssimo davon überzeugen, mir das wieder zu hosten
using namespace XML;
using namespace XML::Mapper
//da ich ka hab, welchen typ die infos haben, nehm ich einfach mal string an...
struct LoginInfo{
std::string username;
std::string password;
std::string domain;
std::string redirect;
};
TagTree file=TiXmlLoad("test.xml");
//die grammatik
Rule<LoginInfo> rule=(
Assert(name()=="login"),//wenn der knoten nicht login heisst, aussteigen
Throw("Fehler in datei")//wen irgendwas an den daten nicht stimmt, aussteigen
[
access("username")[value()>>&LoginInfo::username&],
access("password")[value()>>&LoginInfo::password],
access("domain")[value()>>&LoginInfo::domain],
access("redirect")[value()>>&LoginInfo::redirect]
]
);
LoginInfo info;
//füllen des info objekts
Mapper::map(file,info,rule);
natürlich kann ich optisch nicht dem code von andreas konkurrieren, aber in diesem kleinen Fall kann meine lib ihren vorteil nicht so ganz ausspielen. Einer ihrer vorteile ist, dass du, solltest du irgendwann login als teil einer anderen XML datei haben, "rule" direkt in der neuen grammatik wiederverwenden kannst!