XML Programmierung - Strukturproblem

Für allgemeine Fragen zur Programmierung mit PureBasic.
3dhubiflieger
Beiträge: 123
Registriert: 27.10.2013 12:13

XML Programmierung - Strukturproblem

Beitrag von 3dhubiflieger »

Ich habe hier ne Datei Namens Windowdef.xml (Downloadlink : https://ufile.io/oh7wk ) . In diese möchte ich mehrere Einträge (Knoten) hinzufügen.....also ungefähr so :

<Window Name="Attractmode" Text="Attractmode" ID="-4" Parent="0">
<Application>C:\Attractmode\Attractmode.exe</Application>
<Arguments>c:\program files\dvbviewer\dvbviewer.exe</Arguments>
<Systemwin>0</Systemwin>

...also , das die Zeilen untereinander stehen, und so angeordnet sind, wie der Rest der Datei (Windowdef.xml)

Diesen Code hier benutze ich dafür. Die Datei ist vom DVBViewer. Den Dateipfad müsste man anpassen. Die neue Datei wird im selben Verzeichniss erzeugt zum testen. Wenn ich nun dieses Programm ausführe, findet er zwar die richtige Position,schreibt aber immer nur in eine Zeile, und nicht untereinander, strukturiert ? Wie macht man das ?

Code: Alles auswählen


Procedure  ModifiziereXMLfuerDVBViewer(*CurrentNode, CurrentSublevel)

  If XMLNodeType(*CurrentNode) = #PB_XML_Normal
    
   

     Name.s = GetXMLNodeName(*CurrentNode) 
     If Name = "Windows" ;Wenn der Knoten Windows in der WINDOWDEF.XML gefunden wurde...
       
       
       *Eintrag =CreateXMLNode(*CurrentNode)
       SetXMLNodeName(*eintrag,"Test") 
       SetXMLAttribute(*Eintrag,"Attribut","1")
 
; </Window><Test Attribut="1"/>      .....das wird dann angezeigt in der neuen Datei (config.xml)
       
 
     ProcedureReturn  
    EndIf
         
     
    
   
    *ChildNode = ChildXMLNode(*CurrentNode)
    
    While *ChildNode <> 0
      ModifiziereXMLfuerDVBViewer(*ChildNode, CurrentSublevel + 1)      
      *ChildNode = NextXMLNode(*ChildNode)
    Wend        
  
   
EndIf
EndProcedure











Procedure modifiziereWindowDefXML()


;Pfad zur Windowdef.xml
Originaldatei$ = "c:\programData\CMUV\DVBViewer\WindowDef.xml"
  
If FileSize(Originaldatei$) > -1
  
 
  DVBVBaum = LoadXML(#PB_Any, Originaldatei$)
  If DVBVBaum
    
    If XMLStatus(DVBVBaum) <> #PB_XML_Success
      Message$ = "Fehler in der XML Datei :" + Chr(13)
      Message$ + "Fehler : " + XMLError(DVBVBaum) + Chr(13)
      Message$ + "Zeile : " + Str(XMLErrorLine(DVBVBaum)) + "   Zeichen : " + Str(XMLErrorPosition(DVBVBaum))
    EndIf
    
    *MainNode = MainXMLNode(DVBVBaum)      
    
    If *Mainnode
      
     modifiziereXMLfuerDVBViewer(*MainNode, 0)
     
     If SaveXML(DVBVBaum,GetPathPart(Originaldatei$) + "Config.xml")
         
      FreeXML(DVBVBaum)
      ProcedureReturn 1
      
   
     EndIf
     
    EndIf

    FreeXML(DVBVBaum)
  
  EndIf
  
  
EndIf


EndProcedure  


modifiziereWindowDefXML()
End


Zuletzt geändert von 3dhubiflieger am 02.09.2018 13:48, insgesamt 1-mal geändert.
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: XML Programmierung - Strukturproblem

Beitrag von Kiffi »

3dhubiflieger hat geschrieben:Wenn ich nun dieses Programm ausführe, findet er zwar die richtige Position,schreibt aber immer nur in eine Zeile, und nicht untereinander, strukturiert ? Wie macht man das ?
mit FormatXML().

Grüße ... Peter
Hygge
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: XML Programmierung - Strukturproblem

Beitrag von RSBasic »

@3dhubiflieger
Kannst du zukünftig einen anderen FileHoster verwenden? uploadfiles.io ist nicht gut, danke.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten