Double Werte in XML Speichern mit TinyXML



  • Hallo C++-Community,

    ich erstelle zur Kommunikation zwischen Programmen XML-Dateien, diese XML-Dateien erstelle ich mit TinyXml.

    Wie ich Xml-Dateien erstelle habe ich auch soweit, allerdings suche ich einen besseren weg als meinen, um Double-Werte als Knotenwerte zu speichern.

    Erstellen möchte ich im Prinzip folgende XML-Datei:

    <?xml version="1.0" encoding="utf-8" ?>
    <aircraft type="conventional">
        <wing>
            <geometry>
                <area value="m^2">120</area>
                <wingspan value="m">35</wingspan>
            </geometry>
            <aerodynamic>
                <liftCoefficient>1.5</liftCoefficient>
            </aerodynamic>
        </wing>
    </aircraft>
    

    Dazu habe ich in C++ eine Funktion geschrieben, die mir die Xml-Datei erstellt.
    klappt auch alles soweit.
    Ich möchte allerdings als Knotenwerte (hier: 120, 35 und 1.5) einfache Double-Variablen schreiben.
    Derzeit löse ich dieses Problem, indem ich meine Double-Variable mittels sstringstreams in einen String umwandle, den ich dann in den Knoten schreibe.

    Das sieht dann so aus (Auschnitt um Knoten <area> zu erstellen):

    //create <geometry> child Element <area>
    ele = new TiXmlElement("area");
    valueSstr << area;                                 //double to string
    value = valueSstr.str();
    valueSstr.str("");                                 //clear stream content
    ele->LinkEndChild(new TiXmlText(value.c_str()));
    geometry->LinkEndChild(ele);
    ele->SetAttribute("value", "m^2");
    

    Ich empfinde die Umwandlung aber nicht als besonders elegant und frage mich, ob es eine andere Möglichkeit gibt einen Knotenwert mit TinyXml zu erstellen ausser mit TiXmlText().

    Danke schonmal für eure Hilfe.

    Gruß



  • tinyxml2::XMLElement::SetText gibts mit double



  • Es gäbe dann auch noch std::to_string :
    http://de.cppreference.com/w/cpp/string/basic_string/to_string


Log in to reply