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

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

11

28.06.2012, 15:56

Oh, sry, hab ich übersehen. Allerdings ist mir nicht ganz klar inwiefern rapidxml das nicht können soll. Was genau war denn da das Problem?

12

28.06.2012, 17:50

Für tinyXML gibt es ticpp, ein schöner zu benutzendes C++ Interface. Und du musst nicht alle Attribute durchgehen sondern kannst auch einfach alle Attribute mit einem bestimmten Namen durchgehen, bzw. immer nur das erste behandeln, falls du sicher bist, dass es nur eins gibt.
RapidXML sollte das analog können, les einfach ein bisschen weiter, bevor du es vorschnell zur Seite legst.
Lieber dumm fragen, als dumm bleiben!

GameProggD3D

Frischling

  • »GameProggD3D« ist der Autor dieses Themas

Beiträge: 67

Wohnort: Walding

Beruf: Schüler

  • Private Nachricht senden

13

28.06.2012, 20:26

Oh, sry, hab ich übersehen. Allerdings ist mir nicht ganz klar inwiefern rapidxml das nicht können soll. Was genau war denn da das Problem?

Oder ich habs nicht gesehen, dass es geht.

Kann rapidxml das Folgende:

XML-Datei

Quellcode

1
2
3
4
5
6
<root>
    <Type1 ID="1" value = "5"/>
    <Type1 ID ="2" value = "3"/>
    <Type1 ID="3" value = "7"/>
    <Type2 ID = "1"/>
</root>


Quellcode

1
2
Node* node1  = das erste Node mit Namen Type1, dessen Attribut "ID" den Wert "5" hat
int value = node1->getAttribute("value")


@Jonathan_Klein: Das Problem ist, dass ich ne Möglichkeit suche, wie ich es ohne irgendein Durchgehen machen kann. Ich muss eigentlich nur das machen, was als Beispiel grade jetzt drüber steht.
Programmiere Zombie-Spiel mit nem Freund

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

14

28.06.2012, 22:47

Klar, eine XML Library die keine Attribute versteht wär doch ziemlich nutzlos!?

Legend

Alter Hase

Beiträge: 731

Beruf: Softwareentwickler

  • Private Nachricht senden

15

28.06.2012, 23:36

Ich denke, er bezog sich auf den Teil, dass die Library selber nach einem Attribut mit dem Wert 5 suchen soll.
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/

GameProggD3D

Frischling

  • »GameProggD3D« ist der Autor dieses Themas

Beiträge: 67

Wohnort: Walding

Beruf: Schüler

  • Private Nachricht senden

16

29.06.2012, 08:27

Genau das meinte ich.

Es scheint ja, als könnte man das mit Xpath machen, wenn wer weiß, wie genau man das damit macht, sagt es mir bitte :)

EDIT:
Es ist wirklich genau das: http://www.w3schools.com/xpath/xpath_syntax.asp
was ich wollte.

Also ist die Frage eigentlich die ganze Zeit gewesen: "Kennt wer nen guten Parser mit XPath-Unterstützung" xD

Ich schau mir mal das von Spiele_Programmierer empfohlene PugiXML an.

EDIT 2:
Ich bring PugiXML nicht zum Laufen. Zuerst hatt ich nicht ausgelöste externe Verweise, um das zu lösen, hab ich die pugixml lib-Datei mit dem Projekt gelinkt. Jetzt kamen lauter "XXX ist bereits in YYY definiert" und "Mindestens 1 mehrfach definiertes symbol gefunden". Ich weiß nicht, was ich dagegen tun kann...

Quellcode

1
Fehler  25  error LNK2005: __exit ist bereits in MSVCRTD.lib(MSVCR100D.dll) definiert.  D:\Marcel Game\Spielprojekt\XML Test\LIBCMTD.lib(crt0dat.obj)


Quellcode

1
Fehler  5   error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits<char> > & __thiscall std::basic_ostream<char,struct std::char_traits<char> >::flush(void)" (?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@XZ) ist bereits in pugixmlsd.lib(pugixml.obj) definiert. D:\Marcel Game\Spielprojekt\XML Test\msvcprtd.lib(MSVCP100D.dll)


PS: Es hilft vielleicht zu wissen, dass ich die Lib selbst kompilieren musste
Programmiere Zombie-Spiel mit nem Freund

Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von »GameProggD3D« (29.06.2012, 09:59)


dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

17

29.06.2012, 10:21

Das könntest du dir aber auch einfach schnell selbst bauen...std::map und fertig...

GameProggD3D

Frischling

  • »GameProggD3D« ist der Autor dieses Themas

Beiträge: 67

Wohnort: Walding

Beruf: Schüler

  • Private Nachricht senden

18

29.06.2012, 10:26

Das Problem dabei ist, dass ich keine Ahnung von std::Map habe... 8)
Aber mittlerweile funktioniert's (was den Fehler oben betrifft) eh schon.
Programmiere Zombie-Spiel mit nem Freund

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

19

29.06.2012, 10:37

Das Problem dabei ist, dass ich keine Ahnung von std::Map habe... 8)

Na dann wirds höchste Zeit ;)

GameProggD3D

Frischling

  • »GameProggD3D« ist der Autor dieses Themas

Beiträge: 67

Wohnort: Walding

Beruf: Schüler

  • Private Nachricht senden

20

29.06.2012, 16:58

Kurze Zwischenfrage: Weiß wer, wie ich bei pugixml den wert von nem node kriegen kann (in Integer oder Float-Form)?
Hab nen Value mit

Quellcode

1
Node.Value()
abgefragt, aber der hat den Wert pugi::char_t* und ich kann ihn nicht mit (int) oder (float) umwandeln. Ich hab dann was gesehen im Internet, wo jemand

Quellcode

1
->as_int
geschrieben hat, aber das geht nur für Attribute.
Kann man das irgendwie umwandeln?
Programmiere Zombie-Spiel mit nem Freund

Werbeanzeige