XML in PB verwenden

Anfängerfragen zum Programmieren mit PureBasic.
kiki
Beiträge: 155
Registriert: 06.05.2006 17:54

XML in PB verwenden

Beitrag 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.
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag 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
Bild
Win11 Pro 64-Bit, PB_6.11b1
kiki
Beiträge: 155
Registriert: 06.05.2006 17:54

Beitrag 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?
Zuletzt geändert von kiki am 19.12.2008 14:40, insgesamt 1-mal geändert.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
a²+b²=mc²
kiki
Beiträge: 155
Registriert: 06.05.2006 17:54

Beitrag 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.
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag 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) 
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
a²+b²=mc²
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag von X360 Andy »

kiki
Beiträge: 155
Registriert: 06.05.2006 17:54

Beitrag 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)
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag 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)
Bild
Win11 Pro 64-Bit, PB_6.11b1
Antworten