Seite 1 von 1

Mit InsertXMLStructure ein Array in eine XML-Struktur

Verfasst: 28.07.2019 13:50
von Michael(362)
Moin,
ich bin Anfänger in PureBasic. Zur Zeit teste ich die Demo-Version um zu Erfahren ob ich in PureBasic ein Visual Studio Projekt umsetzen kann.

Ich möchte eine Array-Structur als XML-Datei Speichern. Bis jetzt habe ich folgenden Code ausprobiert:

Code: Alles auswählen

Structure MP3_Titel
  Interpret.s
EndStructure
  
Structure MP3_Table
  Array MP3_Datei.MP3_Titel(1)
EndStructure

Define MP3.MP3_Table

MP3\MP3_Datei(0)\Interpret = "111111111111111"
MP3\MP3_Datei(1)\Interpret = "222222222222222"
  
If CreateXML(0)
  InsertXMLStructure(RootXMLNode(0), @MP3, MP3_Table)
  FormatXML(0, #PB_XML_ReFormat)
  Debug ComposeXML(0)
EndIf
Liefert Folgenden XML-Struktur:

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-16"?>
<MP3_Table>
  <MP3_Datei>
    <element>
      <Interpret>111111111111111</Interpret>
    </element>
    <element>
      <Interpret>222222222222222</Interpret>
    </element>
  </MP3_Datei>
</MP3_Table>
Ich möchte aber die Struktur wie Folgt:

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-16"?>
<MP3_Table>
  <MP3_Datei>
      <Interpret>111111111111111</Interpret>
  </MP3_Datei>
  <MP3_Datei>
      <Interpret>222222222222222</Interpret>
  </MP3_Datei>
</MP3_Table>
Kann mir Jemand helfen den Basic-Code so anzupassen, daß ich die gewünschte XML-Ausgabe bekomme?

mit Grüßen
Michael

Re: Mit InsertXMLStructure ein Array in eine XML-Struktur

Verfasst: 28.07.2019 14:33
von Andesdaf
Dann kannst du InsertXMLStructure nicht nutzen, sondern musst dir deinen XML-Baum mit CreateXMLNode etc. selbst zusammenbauen.

Re: Mit InsertXMLStructure ein Array in eine XML-Struktur

Verfasst: 28.07.2019 15:54
von mk-soft
Es ist am besten so die XML Ausgabe zu verwenden wie diese Insert oder Extract anfordert.
Macht die Sache viel einfacher...

Beispiel mit LinkedList

Code: Alles auswählen

Structure MP3_Titel
  Nummer.i
  TitelName.s
  Interpret.s
  Jahr.s
EndStructure
  
Structure MP3_Table
  DateiName.s
  AlbumName.s
  List Titel.MP3_Titel()
EndStructure

Global NewList MP3.MP3_Table()

AddElement(MP3())
MP3()\DateiName = "xxx2.mp3"
MP3()\AlbumName = "Album xyz"
AddElement(MP3()\Titel())
MP3()\Titel()\Nummer = 1
MP3()\Titel()\TitelName = "Titel 1"
MP3()\Titel()\Interpret = "Interpret John"
AddElement(MP3()\Titel())
MP3()\Titel()\Nummer = 2
MP3()\Titel()\TitelName = "Titel 2"
MP3()\Titel()\Interpret = "Interpret John"


AddElement(MP3())
MP3()\DateiName = "xxx2.mp3"
MP3()\AlbumName = "Album xyz 2"
AddElement(MP3()\Titel())
MP3()\Titel()\Nummer = 1
MP3()\Titel()\TitelName = "Titel 1"
MP3()\Titel()\Interpret = "Interpret John"

If CreateXML(0)
  InsertXMLList(RootXMLNode(0), MP3(), MP3_Table)
  FormatXML(0, #PB_XML_ReFormat)
  Debug ComposeXML(0)
EndIf

Re: Mit InsertXMLStructure ein Array in eine XML-Struktur

Verfasst: 28.07.2019 16:34
von Michael(362)
Vielen Dank für die Antworten.
Der Tip CreateXMLNode zu Verwenden war genau richtig.
Ich sollte die PureBasic-Hilfe besser durchlesen.

Gruß Michael