Seite 1 von 2
XML Tutorial und Fragen zu XML und PB...
Verfasst: 28.08.2008 09:17
von Bisonte
Hallo.
Nun stellt euch mal vor : Von XML kein Plan.
HTML Kenntnisse sind vorhanden (die Basics halt).
Habt ihr evt. im Web irgendwo ein leicht verdauliches XML Einsteigertutorial in Deutsch gefunden ?
Verfasst: 28.08.2008 18:48
von PureProgger
Hallo,
und wieder einmal....
google ist dein Freund.
Gib ein : xml tutorial
meist aber in englischer Sprache! Müsste aber verständlich sein
gruß
Verfasst: 29.08.2008 01:24
von Bisonte
Da ich google schon bemüht habe (ohne mir sichtbaren Erfolg) hab ich hier mal nachgefragt .... Kann ja sein das irgendjemand, irgendwie und irgendwann mal eins aufgetan hätte
Aber davon ab... Das Beispiel in der Hilfe für die XML Nutzung ist ja gruselig... Sind die Pointer nötig ?
Ich möchte eigentlich nur "CivIV" XML Dateien manipulieren und das sieht
mir sehr simpel aus.
Mit Strings ist das ja alles kein Problem , aber wozu gibts denn die XML unterstützung in PB ?
Man muss ja auch mal nen anderen weg nach Rom beschreiten

Verfasst: 29.08.2008 10:10
von Kiffi
Bisonte hat geschrieben:Ich möchte eigentlich nur "CivIV" XML Dateien manipulieren und das sieht
mir sehr simpel aus.
wenn's nicht zu gross ist, dann poste doch mal so ein "CivIV"-XML. Und dann
schreibst Du dazu, was Du gerne wie ändern möchtest.
Grüße ... Kiffi
Verfasst: 29.08.2008 10:21
von Bisonte
Die sind eigentlich recht einfach gestrickt, es gibt nur sehr viele
(Modding) von denen und die sind auch recht gross.
Aus Urheberrechtlichen Gründen werd ich hier mal keine von den Dateien
posten (wer weiss vielleicht ists ja doch erlaubt, aber sicher bin ich mir
halt nicht.)
Aber im Prinzip ist das immer so...
Code: Alles auswählen
<Einheiten>
<Einheit>wert</Einheit>
<Angriff>wert</Angriff>
</Einheiten>
so sind die im prinzip aufgebaut. Eigentlich per stringfunktionen locker
machbar, nur würd ich gern mal sehen ob das XML nicht sinnvoller ist
dafür (und vielleicht noch für andere sachen)
Sinn und Zweck ist halt z.B. ein Einheiten-Editor oder ein MapEditor usw...
um der Horde der Civ4 Modder ein wenig die Arbeit zu erleichtern

Verfasst: 29.08.2008 13:33
von ts-soft
Das ist doch sehr einfach gestrickt, keine Attribute u. ä.
Einfach durch den Baum wandern und mit GetXMLNodeText die Werte
erfragen.
Verfasst: 29.08.2008 13:36
von Bisonte
Meinst du das wie mit NextDatabaseRow oder NextDirectoryEntry ?
das klingt dann in der tat simpel ...
Verfasst: 29.08.2008 13:36
von ts-soft
Bisonte hat geschrieben:Meinst du das wie mit NextDatabaseRow oder NextDirectoryEntry ?
das klingt dann in der tat simpel ...
Genauso meine ich, aber ohne Database

Verfasst: 29.08.2008 13:39
von Bisonte
ts-soft hat geschrieben:
Genauso meine ich, aber ohne Database

Ja, nee ! Is Klar

Verfasst: 29.08.2008 13:42
von Kiffi
Bisonte hat geschrieben:Aus Urheberrechtlichen Gründen werd ich hier mal keine von den Dateien
posten (wer weiss vielleicht ists ja doch erlaubt, aber sicher bin ich mir
halt nicht.)
nunja, dann wird es nicht möglich sein, Dir ein lauffähiges Beispiel zu
zeigen.
Vom Prinzip her kannst Du wie folgt vorgehen:
Code: Alles auswählen
Structure s_Einheiten
Einheit.s
Angriff.s
EndStructure
NewList Einheiten.s_Einheiten()
oXML = LoadXML(#PB_Any, "[deinpfad]\CivIV.XML")
If oXML
NodeCounter = 1
Repeat
oNodeEinheiten = XMLNodeFromPath(RootXMLNode(oXML), "[DeinKompletterNodePfad]/Einheiten[" + Str(NodeCounter) + "]")
If oNodeEinheiten = 0 : Break : EndIf
AddElement(Einheiten())
oNodeEinheit = XMLNodeFromPath(oNodeEinheiten, "Einheit")
If oNodeEinheit
Einheiten()\Einheit = GetXMLNodeText(oNodeEinheit)
EndIf
oNodeAngriff = XMLNodeFromPath(oNodeEinheiten, "Angriff")
If oNodeAngriff
Einheiten()\Angriff = GetXMLNodeText(oNodeAngriff)
EndIf
NodeCounter + 1
ForEver
FreeXML(oXML)
EndIf
Beachte, dass obiges Beispiel nicht lauffähig ist. Hierzu musst Du den
kompletten Pfad in XMLNodeFromPath() eintragen (also nicht nur
"Einheiten"...).
Ich denke, dass der Code nicht allzu schwierig zu verstehen sein sollte.
Falls dennoch Fragen sind: immer her damit!
Grüße ... Kiffi
// Edit: Kleinen Fehler behoben