Seite 1 von 1

XML Programmierung - Strukturproblem

Verfasst: 02.09.2018 13:40
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



Re: XML Programmierung - Strukturproblem

Verfasst: 02.09.2018 13:48
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

Re: XML Programmierung - Strukturproblem

Verfasst: 02.09.2018 13:51
von RSBasic
@3dhubiflieger
Kannst du zukünftig einen anderen FileHoster verwenden? uploadfiles.io ist nicht gut, danke.