Datei von XML zu STL mit C++
-
Hey Leute
Erstmal danke an Comonad.
Ich sitz immernoch an meinem Programm fest.Hab zur Zeit es hinbekommen, dass die Schleife nur bis zu einem bestimmten Punkt arbeitet, jedoch bekomm ich das einlesen der Punkte nicht hin.
Könnt ihr mir da vielleich auf die Sprünge helfen, was falsch ist?
das System sieht so aus (XML)
<Boundary>
<Limit CompId="1">
<StartPoint2d U="2.5100000000E003" V="2.8000000000E003"/>
</Limit>
<Limit CompId="2">
<StartPoint2d U="2.5100000000E003" V="1.4000000000E003"/>
</Limit>
<Limit CompId="3">
<StartPoint2d U="5.7100000000E003" V="1.4000000000E003"/>
</Limit>
<Limit CompId="4"><StartPoint2d U="5.7100000000E003" V="2.8000000000E003"/>der anfang lautet
----------------------------------------------------------------------------
pugi::xpath_node_set tools = document.select_nodes("Ship/Block/PlanePanel/Boundary/Limit/StartPoint2d");for (pugi::xpath_node_set::const_iterator it = tools.begin(); it != tools.end(); ++it)
{
pugi::xpath_node limit_node = *it;
double U = tools.attribute("U").as_double();
output << "vertex " << U << std::endl;
}
----------------------------------------------------------------------------oder
----------------------------------------------------------------------------
pugi::xpath_node_set tools = document.select_nodes("Ship/Block/PlanePanel/Boundary/Limit");for (pugi::xpath_node_set::const_iterator it = tools.begin(); it != tools.end(); ++it)
{
pugi::xpath_node limit_node = *it;
pugi::xpath_node originNode2 = tools.child("StartPoint2d");
double U = originNode2.attribute("U").as_double();
output << "vertex " << U << std::endl;
}
----------------------------------------------------------------------------ich weiß leider nicht genau, wie ich das definier muss, damit die Punkte eingelesen werden können.
Hoffe ihr könnt mir helfen
-
Tut mir leid, Juwe, aber so wird das nichts.
Deine Fragen zeigen, dass du den Beispielcode nur ansatzweise verstehst. Bevor du weitermachst, kauf dir ein gutes C++ Buch (z.B. den C++ Primer oder "Der C++ Programmierer"), ansonsten kommst du einfach nicht weiter. Wenn du dich mal in die Grundlagen eingelesen hast, wird das Verstehen des Quelltextes kein Problem mehr sein.
-
Hey Leute
Ich komm gerade nicht weiter und hoffe, dass ihr mir einen Tipp geben könnt.
So sieht mein Code aus
cout << "\nX=: " << node.node().attribute("X").value();
und gibt mir aus
X=: 7.650000 E003
X=: 0.000000 E000
usw.jedoch kann ich den Wert nicht vergleichen lassen.
so in etwaif(node.node().attribute("X").value()>0)
{}das funktiert leider nicht und ich hab auch schon versucht den Wert zu übergeben
int o;
o=*node.node().attribute("X").value();leider auch ohne den gewünschten erfolg.
Kann mir mal bitte jemand sagen, wie ich das schreiben kann, damit ich den Wert richtig übergebe und somit vergleichen kann?
Danke schonmal im vorraus.
-
Hat sich erledigt, hab einen Weg gefunden
-
Hey Leute.
Ich hoffe ihr könnt mir mit eurer Erfahrung helfen.
Hab ein Programm geschrieben, dass Punkte aus einer Datei raussucht und in ein .txt file speichert.Mein Problem ist nun, dass das Programm bis zu über 100 Punkte ordentlich macht und dann auf einmal Fehler macht, obwohl er immernoch das selbe macht.
Vllt hab ich ja einen Fehler bei der Definition der Variablen gemacht.
Weiß vielleicht einer von euch, woran das liegen könnte???Ich kann euch auch den Code schreiben, aber ist halt etwas länger.
Danke schon mal
-
Was für eine Art Fehler ist es denn? Hast du schonmal versucht den Fehler mit Hilfe eines Debuggers zu lokalisieren?
-
ja, dass ist das Problem.
es wir nicht als Fehler erkannt.
Er rechnet weiter, aber gibt falsche ergebnisse aus.also:
ich lass das Programm werte einlesen und auf eine txt-datei ausgeben
nun ist das Problem, dass er in der mitte der gesamten datei auf einmal sagt, das alle werte null sind und somit falsche ausgelesen werden
-
Wie gesagt: Schmeiß den Debugger an und finde den Bug!
Wenn du nicht weißt wie das geht, lies dir ein Tutorial deiner Wahl durch.