Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

idontknow

unregistriert

1

14.12.2010, 21:40

TinyXML

moin!

Ich versuch mal gerade mit XML was zu machen aber hab mich schon mit TinyXML angefeindet :).
Ich versuch eigendlich nur eine Datei zu erhalten und dann den Text des Root Elements auszugeben!

sieht dann ca. so aus:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main()
{
    TiXmlDocument doc("test.xml");

    bool loadSuccess = doc.LoadFile();
    if(!loadSuccess)
    {
        cout << "Failed to load XML FIle!" << endl;
    }

    TiXmlHandle hDoc(&doc);
    TiXmlElement *element = hDoc.FirstChildElement().Element();
    cout << element->GetText();

    cin.get();
    return 0;
}


Hab keine Ahnung von TiXML, habs mir ausm Tut zusammengerimt gibt ja kaum welche und den Code ansicht finde ich sowieso total unverständlich ist gewissermasen die schlimmste API die mir je begegnet ist (und wird den Rekord vmtl noch lange halten..).

Naja auf jedenfall schmeißt alles was mit GetText/( zu tun hat einen bad ptr und ich bin mit meinem latein + probieren am Ende.

Vllt hat einer von euch verstanden wie TiXML funktioniert? (Die Datei kann geladen werden, das ist niucht das Problem.. und der Inhalt passt auch!!)

mfg

edit: solved!

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »idontknow« (14.12.2010, 21:52)


2

14.12.2010, 23:25

http://code.google.com/p/ticpp/

Ist wesentlich angenehmer. Alleine schon, dass man Fehler per Exceptions bekommt, und das Programm nicht mehr abschmiert, wenn man mal bei einem Subnode nicht abgefragt hat, ob er wirklich da ist, und er zufälligerweise mal nicht da war.
Lieber dumm fragen, als dumm bleiben!

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

3

14.12.2010, 23:52

Wenn wir schon bei Alternativ Bibliotheken sind:

http://pugixml.org/

Wurde letztens mal im Forum meiner Schule genannt. Habs nicht angeschaut, aber vlt. einen Blick Wert. Soll recht einfach zu benutzen sein.

Databyte

Alter Hase

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

4

15.12.2010, 00:11

Kommt darauf an wie deine Xml Aussieht

Zum Beispiel:

Quellcode

1
2
3
4
<?xml version="1.0" ?>
<IrgendeinName>
  <information>Hallo</information>
</IrgendeinName>

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int main()
{
    TiXmlDocument doc("test.xml");

    bool loadSuccess = doc.LoadFile();
    if(!loadSuccess)
    {
        cout << "Failed to load XML FIle!" << endl;
    }

    // Als erstes holst du dir die Rootnode
    TiXmlNode* root = doc->FirstChild();
    
    // node müsste jetzt überprüft werden aber das lass ich jetzt mal weg... dann musst du dir das Element holen was du haben willst
    TiXmlElement* elem = root->FirstElementChild("information");

    cout << elem ->GetText();

    cin.get();
    return 0;
}

Oberon

Treue Seele

Beiträge: 181

Wohnort: Österreich

Beruf: Student

  • Private Nachricht senden

5

15.12.2010, 19:19

Andere Alternativbibliothek: Boost.PropertyTree (siehe auch hier )

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Oberon« (15.12.2010, 20:21)


dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

Oberon

Treue Seele

Beiträge: 181

Wohnort: Österreich

Beruf: Student

  • Private Nachricht senden

7

15.12.2010, 20:23

Boost.PropertyTree benutzt auch intern RapidXML, das steht auch auf auch auf der RapidXML-Site:

Zitat von »http://rapidxml.sourceforge.net/«

You may also like to check Boost.PropertyTree library, which presents a higher level interface, and uses RapidXml as its default XML parser.

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

8

18.12.2010, 11:49

Als die schlimmste Libary, die es gibt würde ich TiXML jetzt allerdings nicht bezeichnen. Wenn man das mal durchblickt hat, ist es finde ich schon recht logisch und lässt sich gut verwenden(allerdings ist TiCpp natürlich vorzuziehen)

Werbeanzeige