Auf XML zugreifen
-
hi leutz, wieder ich.
kann mir jemand sagen wie ich mit c++ auf eine kleine xml datei zugreife?
die datei soll ungefähr so aussehen:
bla bla Header doctype, ... <login> <username>VALUE</username> <password>VALUE</password> <domain>VALUE</domain> <redirect>VALUE</redirect> </login>
-
1. Ganz normaler File-Zugriff (natürlich umständlich da man selbst einen Parser benötigt)
2. Beliebige ergoogelte XML-LibraryBTW: Ich hoffe mal in dem XML-File steht das Passwort nicht unverschlüsselt?
MfG SideWinder
-
da mach dir mal keine sorgen.
ich benötige aber auf jeden fall eine funktion / klasse, ... die in kommerziellen programmen verwendet werden darf. also lgpl z.b.
-
ray_ray schrieb:
da mach dir mal keine sorgen.
ich benötige aber auf jeden fall eine funktion / klasse, ... die in kommerziellen programmen verwendet werden darf. also lgpl z.b.
Also wenn du was wirklich einfaches brauchst, was aber nicht die hoechste Performance liefert, kannst du dir mal mein ezxml anschauen.
http://andreas.syndrom23.de/svn/projects/ezxml/trunk
EZXML xml("datei.xml"); cout << xml["/login/username"] << endl;Das in [] ist XPath 1.0. ezxml basiert auf libxml2.
HTH,
Andreas
-
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!