XML auslesen, mainNode.... kann man den ändern?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Helmut
Beiträge: 162
Registriert: 20.09.2004 22:53

Re: XML auslesen, mainNode.... kann man den ändern?

Beitrag von Helmut »

@Helpy: Das war ein guter Hinweis, hier der funktionierende Code.

An alle Beteiligten: VIELEN DANK

Code: Alles auswählen

EnableExplicit

Define RootNode
Define SensorListNode
Define SensorNode

#XML = 1

Structure sSensor
   ID.s
   Type.s
   Min.s
   Max.s
   Value.s
   Display.s
EndStructure

NewList Sensor.sSensor()

InitNetwork()

 If  URLDownloadToFile_(0,"http://192.168.0.140/sensorList.xml", "c:\Test_1_Helmut.xml",0,0)
    ;Debug "OK "
  Else
    ;Debug "Fehler " 
  EndIf
  
  ;Debug "drin"
  LoadXML(#XML, "C:\Test_1_Helmut.xml");GetTemporaryDirectory()+"Example.xml")

    If XMLStatus(#XML) <> #PB_XML_Success
      MessageRequester( "XML Error", "Error: " + XMLError(#XML) )
      End
    EndIf
  
  
   RootNode = RootXMLNode(#XML)
      ;Debug "drin1" ; funktioniert
   If RootNode
          ;Debug "drin2" ; funktioniert
      SensorListNode = XMLNodeFromPath(RootNode, "SensorList")
      ;Debug "drin3"
      If SensorListNode
           ; Debug "drin4" ; nothing
         
         SensorNode = XMLNodeFromPath(SensorListNode, "Sensor")
         
         While SensorNode
            
            AddElement(Sensor())
            
            Sensor()\ID      = GetXMLNodeText(XMLNodeFromPath(SensorNode, "ID"))
            Sensor()\Type    = GetXMLNodeText(XMLNodeFromPath(SensorNode, "Type"))
            Sensor()\Min     = GetXMLNodeText(XMLNodeFromPath(SensorNode, "Min"))
            Sensor()\Max     = GetXMLNodeText(XMLNodeFromPath(SensorNode, "Max"))
            Sensor()\Value   = GetXMLNodeText(XMLNodeFromPath(SensorNode, "Value"))
            Sensor()\Display = GetXMLNodeText(XMLNodeFromPath(SensorNode, "Display"))
            
            SensorNode = NextXMLNode(SensorNode)
            
         Wend
                  
      ;EndIf
         
   EndIf
   
   FreeXML(#XML)
   
EndIf

; Ergebnisse anzeigen
ForEach Sensor()
   Debug "ID: " + Sensor()\ID
   Debug "Type: " + Sensor()\Type
   Debug "Min: " + Sensor()\Min
   Debug "Max: " + Sensor()\Max
   Debug "Value: " + Sensor()\Value
   Debug "Display: " + Sensor()\Display
   Debug "---"
Next
Gruß Helmut
Antworten