XML-Parser: jemand lust zu testen?
-
-
otze schrieb:
so, neue version ist fertig, doch nun macht der hoster probleme
klasse aber auch. muss ich mir nun neuen webspace auftreiben
Ich kann dir anbieten das bei mir auf den Webserver zu packen.
Wenn ja meld dich mal im IRCMfG
-
Hier ist die aktuelle Version des XML - Parsers von otze:
-
@otze also irgendwas stimmt da net mit spirit in zusammenhang mit dem VC++7.1
Er hat probleme damit die Initialisierungsliste von den Konstruktoren richtig auszuwerten
dakommt dann so etwas:
------ Erstellen gestartet: Projekt: otzexml, Konfiguration: Debug Win32 ------ Kompilieren... test.cpp e:\boost\vc71\include\boost-1_32\boost\spirit\tree\common.hpp(227) : error C2065: 'NodeType': nichtdeklarierter Bezeichner e:\boost\vc71\include\boost-1_32\boost\spirit\tree\common.hpp(225): Bei der Kompilierung der Memberfunktion 'boost::spirit::node_val_data<IteratorT,ValueT>::node_val_data(void)' der Klassenvorlage with [ IteratorT=boost::spirit::node_val_data_factory<XML::NodeType>::factory<Iterator>::iterator_t, ValueT=XML::NodeType ] e:\boost\vc71\include\boost-1_32\boost\spirit\tree\common.hpp(51): Siehe Verweis auf Instanziierung der kompilierten Klassenvorlage 'boost::spirit::node_val_data<IteratorT,ValueT>' with [ IteratorT=boost::spirit::node_val_data_factory<XML::NodeType>::factory<Iterator>::iterator_t, ValueT=XML::NodeType ] e:\boost\vc71\include\boost-1_32\boost\spirit\tree\common.hpp(534): Siehe Verweis auf Instanziierung der kompilierten Klassenvorlage 'boost::spirit::tree_node<T>' with [ T=boost::spirit::tree_match<Iterator,Factory,boost::spirit::nil_t>::parse_node_t ] e:\boost\vc71\include\boost-1_32\boost\spirit\tree\common.hpp(1294): Siehe Verweis auf Instanziierung der kompilierten Klassenvorlage 'boost::spirit::tree_match<IteratorT,NodeFactoryT,T>' with [ IteratorT=Iterator, NodeFactoryT=Factory, T=boost::spirit::nil_t ] c:\Documents and Settings\evilissimo\My Documents\Visual Studio Projects\Job\otzexml\XMLParser.hpp(40): Siehe Verweis auf Instanziierung der kompilierten Klassenvorlage 'boost::spirit::tree_parse_info<IteratorT,NodeFactoryT>' with [ IteratorT=Iterator, NodeFactoryT=Factory ] c:\Documents and Settings\evilissimo\My Documents\Visual Studio Projects\Job\otzexml\XMLParser.hpp(94): Siehe Verweis auf Instanziierung der kompilierten Funktionsvorlage 'XML::TagTree<Char> XML::parse<Iterator>(Iterator,Iterator)' with [ Char=char, Iterator=Iterator ] c:\Documents and Settings\evilissimo\My Documents\Visual Studio Projects\Job\otzexml\test.cpp(11): Siehe Verweis auf Instanziierung der kompilierten Funktionsvorlage 'XML::TagTree<Char> XML::parseFromFile<char>(const Char *)' with [ Char=char ] e:\boost\vc71\include\boost-1_32\boost\spirit\tree\common.hpp(227) : error C2064: Ausdruck ergibt keine Funktion, die 0 Argumente übernimmt Das Build-Protokoll wurde unter "file://c:\Documents and Settings\evilissimo\My Documents\Visual Studio Projects\Job\otzexml\Debug\BuildLog.htm" gespeichert. otzexml - 2 Fehler, 0 Warnung(en) ---------------------- Fertig ---------------------- Erstellen: 0 erfolgreich, 1 fehlgeschlagen, 0 übersprungen
Bei diesem code hier:
225: node_val_data() 226: : text_(), is_root_(false), parser_id_(), value_() 227: {}
Genau genommen gefällt ihm das is_root_() scheinbar nicht, aber was die leere initialisierung soll verstehe ich auch net so ganz, nur damit man die Initialisierungsliste benutzt? Wäre etwas komisch imho, oder geht es hier um RAII?
Das problem konnte ich auf jeden fall so lösen das ich boost\spirit\tree\common.hpp bei allen Konstruktoren so umgeändert habe das is_root_ nicht mehr in der intialisierungsliste ist, sondern im C'tor Rumpf einen Wert zugewiesen bekommt.
Für andere Workarounds/Problemlösungen bin ich erst mal offen
-
*push*
-
ist doch erst 6 stunden her und dann schon pushen.
-
bin mir jetzt nicht so ganz sicher, sind jetzt die grundsprachmittel alle drin, damit man XML dateien auswerten kann, oder fehlt noch was?
(das kleine manko, dass man bisher entweder value oder childnodes haben kann wird in der nächsten version noch korrigiert, ohne dass dieses interface dran leiden muss :D)
sonst irgendwelche anregungen?
-
Wie wäre es mit einer Möglichkeit das man alle Tags mit ihren Attributen abfragen kann?
Aber ansonsten finde ich es ganz nett
-
Bisher mit TinyXML gearbeitet, bisher hat das gereicht.
-
grad gemerkt: kommentare fehlen noch
ps: ja, tinyXML ist was schönes, aber das ist kein grund, nicht selber mal was größeres zu basteln.
-
@evilissimo deinem wunsch wurde folge geleistet, iterieren durch die attribute ist eingebaut.
nun wende ich mich dem thema suchen von nodes zu.
Ich hab mir überlegt, dass es vielleicht ganz günstig wäre, bestimmte nodes suchen zu können, dazu hab ich mir folgende syntax überlegt und ich wollte euch fragen, was ihr davon haltet://aufbau des person tags //<person id=1> // <addresse> // <stadt>Essen</stadt> // ... // </addresse> //</person> //alle person-tags suchen Collection collection=test["person"]; //nach dem Knoten mit der id 1 suchen Node<char> node=collection.search.attribute("id",1); //nach allen knoten mit den ids von 1-3 suchen Collection<Char> result=collection.search.attribute("id",1,3); //nach allen Knoten suchen, deren id nicht 1 ist result=collection.search.not().attribute("id",1); //nach allen personen suchen die in essen wohnen result=collection.search["addresse"]["stadt"].value("essen");
-
wo ist der kotzeimer?
-
otze schrieb:
@evilissimo deinem wunsch wurde folge geleistet, iterieren durch die attribute ist eingebaut.
nun wende ich mich dem thema suchen von nodes zu.
Ich hab mir überlegt, dass es vielleicht ganz günstig wäre, bestimmte nodes suchen zu können, dazu hab ich mir folgende syntax überlegt und ich wollte euch fragen, was ihr davon haltet://aufbau des person tags //<person id=1> // <addresse> // <stadt>Essen</stadt> // ... // </addresse> //</person> //alle person-tags suchen Collection collection=test["person"]; //nach dem Knoten mit der id 1 suchen Node<char> node=collection.search.attribute("id",1); //nach allen knoten mit den ids von 1-3 suchen Collection<Char> result=collection.search.attribute("id",1,3); //nach allen Knoten suchen, deren id nicht 1 ist result=collection.search.not().attribute("id",1); //nach allen personen suchen die in essen wohnen result=collection.search["addresse"]["stadt"].value("essen");
Also ich finde es net so schlecht, könnte auch folgendermaßen abändern:
//nach dem Knoten mit der id 1 suchen Node<char> node=collection.search("id").attribute(1); //nach allen knoten mit den ids von 1-3 suchen Collection<Char> result=collection.search("id").attribute_range(1,3); //nach allen Knoten suchen, deren id nicht 1 ist result=collection.search("id").not().attribute(1);
MFG
PS: Scheiß hitze, kann net schlafen
-
kind-node schrieb:
wo ist der kotzeimer?
links neben der Treppe, aber nun LAUF, sonst musst es selbst aufwischen :p
@evilissimo
Klar, so ist direkt sichtbar was gesucht wird, werd ich wohl mal überdenken müssen...ps: kann auch net schlafen
-
so, spätestens montag kommt die neue version, muss nurnoch den bissl docu schreibkram erledigen
//edit leider wurde die suchfunktion nicht ganz so mächtig, die syntax die da oben steht hatte viel zu viele tücken
-
das sind keine xml-dateien die du hast.
xml dateien beginnen mit
<?xml version="1.0" ... >
-
Gerüchteweise haben erste versionen noch nicht den vollen funktionsumfang und werden nach und nach erweitert, mit andren Worten: diese Tags sind in der grammatik inzwischen drin.
Aber danke für deine freundliche Art auf probleme hinzuweisen.
-
willst du damit sagen ich war unfreundlich?
-
WTF???????? schrieb:
willst du damit sagen ich war unfreundlich?
hab ich das? Ich glaube, du interpretierst zu viel
-
Ich freue mich schon auf die Mail
Btw wenn du möchtest packe ich das in meine neue Download sektion, natürlich mit dem Vermerk das es von dir ist. Anstatt hier nur den link zu posten.
MfG