Seite 1 von 2

XML in PB verwenden

Verfasst: 19.12.2008 13:38
von kiki
Gibt es ein XML Tutorial oder sowas, weil cih keine Plan habe, wie man XML verwendet.

Ich möchte auf enem Server eine XML Datei speichern, die Daten enthält. Mein Programm soll eine neue XML Datei mit neuen Daten erstellen und hochladen können. Und vorhandene Daten lesen können, um sie in ein Gadget einzugüfen.

Verfasst: 19.12.2008 13:55
von Falko
Zwar kenne ich mich damit auch nicht aus, aber vielleicht hier
eine deutsche komplette Beschreibung zum XML, die weiter helfen könnte.

http://www.drweb.de/magazin/xml-worksho ... anfang-an/

Gruß, Falko

Verfasst: 19.12.2008 14:14
von kiki
Ok, und wie verwende ich das in PB?

Also von den Befehlen her?

Also was muss ich tun, um eine Datei nacheinander mit Text zu füllen?

Verfasst: 19.12.2008 14:33
von Kiffi
kiki hat geschrieben:Ok, und wie verwende ich das in PB?
als erstes benötigst Du ein XML-Objekt
-> CreateXML()

danach hängst Du nacheinander die entsprechenden Nodes in das XML
-> CreateXMLNode()
-> SetXMLNodeName()
-> SetXMLNodeText()

die Nodes können auch mit Attributen versehen werden
-> SetXMLAttribute()

Das ganze kannst Du dann auch lokal abspeichern:
-> SaveXML()

und nicht vergessen nach der Benutzung des XML das Objekt wieder freizugeben:
-> FreeXML()

Das wars auch schon. Alles weitere kannst Du in der PB-Hilfe nachschauen :-)

Wenn es konkrete Probleme geben sollte: Einfach nachfragen.

Grüße ... Kiffi

Verfasst: 19.12.2008 16:23
von kiki
Meinst du so:

Code: Alles auswählen

DeleteFile("c:\test.txt")
CreateXML(0, #PB_UTF8)
*Eltern = AllocateMemory(1000)
*Erg = CreateXMLNode(*Eltern, *Neu, #PB_XML_Normal) 
SetXMLNodeName(*Erg, "Test") 
SetXMLNodeText(*Erg, "Hallo")
SaveXML(0, "C:\test.txt", 0)
FreeXML(0)
Ich kann leider weder "Hallo" noch "Test" in der gespeicherten Datei nachlesen.

Verfasst: 19.12.2008 17:01
von Falko
Vielleicht so?

Code: Alles auswählen

DeleteFile("test.txt")
CreateXML(0)
*Eltern= RootXMLNode(0)
;*Eltern = AllocateMemory(1000)
*Erg = CreateXMLNode(*Eltern, *Neu)
SetXMLNodeName(*Erg, "Test")
SetXMLNodeText(*Erg, "Hallo")
SaveXML(0, "test.txt")
FreeXML(0) 

Verfasst: 19.12.2008 19:02
von Kiffi
ich persönlich lasse dieses (in diesem Fall überflüssige) Pointersternchen
gerne weg. Des weiteren braucht's bei CreateXMLNode() in dem
Beispielcode keinen Previousnode. Die Datei muss auch nicht vorher
gelöscht werden, weil SaveXML sie eh überschreibt.

Code: Alles auswählen

CreateXML(0)
RootNode = RootXMLNode(0)
NeuerNode = CreateXMLNode(RootNode)
SetXMLNodeName(NeuerNode, "Test")
SetXMLNodeText(NeuerNode, "Hallo")
SaveXML(0, "d:\kiki.xml")
FreeXML(0)
(ein Deluxe-Beispiel würde jetzt auch noch die Rückgabewerte der
einzelnen Befehle auswerten und entsprechend darauf reagieren, aber
dazu habe ich jetzt keinen Bock ;-))

Grüße ... Kiffi

Verfasst: 19.12.2008 19:50
von X360 Andy

Verfasst: 20.12.2008 15:25
von kiki
Wie füge ich einen neuen Knoten Namen, mit einem neuen Knoten Text ein, bei mir klappt, das irgentwie nicht:

Code: Alles auswählen

CreateXML(0) 
RootNode = RootXMLNode(0) 
NeuerNode = CreateXMLNode(RootNode) 

SetXMLNodeName(NeuerNode, "Test") 
SetXMLNodeText(NeuerNode, "Hallo") 
SetXMLNodeName(NeuerNode, "Test") 
SetXMLNodeText(NeuerNode, "Hallo") 
SaveXML(0, "c:\kiki.xml") 
FreeXML(0)

Verfasst: 20.12.2008 15:33
von Falko
Z.B. so?

Code: Alles auswählen

CreateXML(0)
RootNode = RootXMLNode(0)
NeuerNode = CreateXMLNode(RootNode)
SetXMLNodeName(NeuerNode, "Test")
SetXMLNodeText(NeuerNode, "Hallo")
NeuerNode = CreateXMLNode(NeuerNode)
SetXMLNodeName(NeuerNode, "Test")
SetXMLNodeText(NeuerNode, "Hallo")
SaveXML(0, "c:\kiki.xml")
FreeXML(0)