XML in PB verwenden

Anfängerfragen zum Programmieren mit PureBasic.
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 »

Steht in der Hilfe, aber hier ein Beispiel. Wie gesagt, ich kenne mich auch nicht damit aus, aber versuche es selbst zu verstehen :wink:

Code: Alles auswählen

FormatXML(0,#PB_XML_WindowsNewline)
bzw. mit zwei Zeichen einrücken, dann so:

Code: Alles auswählen

FormatXML(0,#PB_XML_WindowsNewline,2)
Bild
Win11 Pro 64-Bit, PB_6.11b1
kiki
Beiträge: 155
Registriert: 06.05.2006 17:54

Beitrag von kiki »

Wie bearbeite ich ein Vorhandenen Dokument weiter?

Also

Code: Alles auswählen

LoadXML()
was dannach kommt weiß ich nicht...

und dann

Code: Alles auswählen

SetXMLNodeName()
SetXMLNodeText()
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

kiki hat geschrieben:was dannach kommt weiß ich nicht...
wissen wir auch nicht. Es sei denn, Du verrätst uns, was Du überhaupt
machen willst ;-)

Grüße ... Kiffi
a²+b²=mc²
kiki
Beiträge: 155
Registriert: 06.05.2006 17:54

Beitrag von kiki »

Ja, also wie gesagt, das Dokument weiter verarbeiten.

Also dieses Dokument laden:

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?><Test><Test>Hallo</Test>Hallo</Test>
und noch mehr reinschreiben mit

Code: Alles auswählen

SetXMLNodeName()
und

Code: Alles auswählen

SetXMLNodeText()
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

kiki hat geschrieben:Ja, also wie gesagt, das Dokument weiter verarbeiten.

Also dieses Dokument laden:

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?><Test><Test>Hallo</Test>Hallo</Test>
und noch mehr reinschreiben mit

Code: Alles auswählen

SetXMLNodeName()
und

Code: Alles auswählen

SetXMLNodeText()
ja, dann mach das doch! In diesem Thread sind alle Infos, die Du dafür
benötigst.

Grüße ... Kiffi
a²+b²=mc²
kiki
Beiträge: 155
Registriert: 06.05.2006 17:54

Beitrag von kiki »

Habe ich schon versucht, klappt nicht:

Code: Alles auswählen

LoadXML(0, "C:\kiki.xml")
RootNode = RootXMLNode(0) 
NeuerNode = CreateXMLNode(RootNode) 
SetXMLNodeName(NeuerNode, "Test") 
SetXMLNodeText(NeuerNode, "Hallo") 
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

kiki hat geschrieben:Habe ich schon versucht, klappt nicht:
XML-Dokumenten dürfen nur ein sogenannten Stammelement haben:

Das ist ok:

Code: Alles auswählen

<Test>
  <Test>Hallo</Test>
  <Test>Hallo</Test>
  <Test>Hallo</Test>
</Test>
Das ist nicht ok:

Code: Alles auswählen

<Test>Hallo</Test>
<Test>Hallo</Test>
<Test>Hallo</Test>
Du siehst: Im ersten Fall gibt es einen oberen 'Test'-Node, der drei
weitere Nodes beinhaltet. Dieser obere Node ist das Stammelement.

wenn man mal die Nodes ein wenig sinnvoller benennt, dann sähe das
so aus:

Code: Alles auswählen

<Stammelement>
  <Test>Hallo</Test>
  <Test>Hallo</Test>
  <Test>Hallo</Test>
</Stammelement>
Wenn Du nun Deinen Code ausführst, so versuchst Du, parallel zum
Stammelement ein weiteres Stammelement hinzuzufügen. Das geht nicht.

Du musst also zuerst das Stammelement ermitteln (mit
XMLNodeFromPath()) und dann an dieses Element Deinen neuen Node
anhängen:

Code: Alles auswählen

LoadXML(0, "C:\kiki.xml")
RootNode = RootXMLNode(0)

Stammelement = XMLNodeFromPath(RootNode, "Test")

If Stammelement
  
  NeuerNode = CreateXMLNode(Stammelement)
  SetXMLNodeName(NeuerNode, "Test")
  SetXMLNodeText(NeuerNode, "Hallo") 
  
Else
  
  Debug "!Stammelement"
  
EndIf

XML.s = Space(ExportXMLSize(0))
ExportXML(0, @XML, Len(XML))

MessageRequester("", XML)
a²+b²=mc²
Antworten