Problem bei parsen von Xml-Datei mit TinyXml



  • es ist mir natürlich klar das man auch andres als mit nextSiblingElement dadurch iterieren kann, was ich sagen wollte ist, dass ich mir das neue Element nicht aus den Fingern sauge.



  • Man sollte Feler bei sich suchen... und nicht in der Library.

    Wenn man ihn dann selber nicht findet, ist trotzdem selten die library schuld... dann sollte man anderen mal den Code zeigen, damit sie ihn mal den Fehler suchen...

    Kurz gesagt: Zeig mal deinen Code.



  • :):):) schrieb:

    wie gesagt ich ITERIERE durch den node. folglich ermittle ich den nächsten node mit nextSibling, ich denke das ich da nichts falsch machen kann.

    http://www.grinninglizard.com/tinyxmldocs/classTiXmlNode.html#a44

    Returns 0 if there is not another element.



  • ...
    
    TiXmlElement* fieldNode;
    xmlAccess.requireNode( rootNode, "field", &fieldNode );
    while( fieldNode )
    {
        std::string tileName;
        xmlAccess.requireAttribute( fieldNode, "tile", &tileName );
    
        ...
    
        fieldNode = fieldNode->NextSiblingElement( "field" );
    }
    
    ...
    
    void XmlAccess::requireAttribute( const TiXmlElement* element, const std::string& name, std::string* retValue ) const
    {
        if( element->Attribute( name ) )
        {
            *retValue = element->Attribute( name ); // fehler
        }
        else
            throw( MissingArgumentException( "Required attribute \"" + name + "\" is missing." ) );
    }
    
    ...
    

    zu sagen ist das das ganze so etwa 30 mal funktioniert und dann kommt der fehler da wo ich fehler geschrieben hab.

    ...
    <map name="Oraltal">
    	<field tile="grass" />
    	<field tile="grass" />
    	<field tile="grass" />
    	<field tile="grass" />
    	<field tile="grass" />
    	<field tile="grass" />
    	<field tile="grass" />
    	<field tile="grass" />
    ...
    

    und das war noch ein auszug aus der xml datei



  • :):):) schrieb:

    ich wollte mich mal erkundigen ob es einen bekannten Fehler mit der TinyXml Lib gibt, der sich dadurch äussert, das beim iterieren durch die unterelemente eines nodes irgendwann das element ungültig ist.

    Gibt es nicht. Es ist mit 99,999999-prozentiger Sicherheit dein Fehler.



  • danke für diesen nutzlosen beitrag. das die library nicht fehlerhaft ist, ist mir klar. ich meinte eher, das unter bestimmten umständen fehler auftauchen.
    da ich jetzt source gepostet hab war dieser beitrag einer derjenigen die man sich getrost sparen kann. sry, aber is so.

    btw fängt man fast an zu lachen wenn man sich die ganzen posts darüber anschaut.



  • gucks dir halt im debugger an, was da passiert 😉 sieht eher so aus, als würd dein string retValue quer schiessen.



  • mir fällt grad auf das der fehler schon im if auftritt, also beim ersten zugriff auf das element. ich hab mir auch mal den pointer auf das element ausgeben lassen und kann soviel sagen, dass es nicht null ist.



  • :):):) schrieb:

    danke für diesen nutzlosen beitrag. das die library nicht fehlerhaft ist, ist mir klar. ich meinte eher, das unter bestimmten umständen fehler auftauchen.

    Wenn die "bestimmten Umstände" darin bestehen, dass dein Code Fehler hat, dann kann das passieren, ja.

    da ich jetzt source gepostet hab war dieser beitrag einer derjenigen die man sich getrost sparen kann. sry, aber is so.

    Du hast eine klare und korrekte Antwort auf deine Frage bekommen. Wenn dir die Antwort nicht gefällt, ist das dein Problem.

    Dein Heap ist kaputt, und das ist nicht die Schuld von TinyXML.



  • der fehler besteht wenn man diesen source in ein neues projekt implementiert. wenn es ein heap fehler ist, dann ist er in dem code.


Anmelden zum Antworten