Page 1 sur 1

[RESOLU]le XML et le Purebasic .. lire variable

Publié : mar. 21/sept./2010 18:25
par 3d0uard0
Bonjour à tous !

Je vous explique : J'ai un fichier launcher.xml et j'aimerai lire ce que à dedans :

Code : Tout sélectionner

name_serveur$ = "Nom du serveur"
rate_xp$ = "Rate d'xp"
rate_ka$ = "rate de kamas"
rate_drop$ = "Rate de drop"
J'aimerai récupérer les variables qu'il y a dedans pour les utiliser dans mon programme. exemple :

Code : Tout sélectionner

PrintN("Les rate d'xp sont :" +rate_xp$)
Si cela est possible de le faire avec un fichier .txt ou autre cela me vas aussi !!

Merci d'avance pour vos réponses !! Bonne soirée =)

Re: le XML et le Purebasic .... Merci d'avance pour vos répo

Publié : mar. 21/sept./2010 18:42
par venom
Salut 3d0uard0,

voici le code fournis pas la doc de purebasic F1 regarde deja ça si sa peut t'avancer :

Code : Tout sélectionner

#Window     = 0
#TreeGadget = 0
#XML        = 0

; This procedure fills our TreeGadget, by adding the current node
; and then exploring all childnodes by recursively calling itself.
;
Procedure FillTree(*CurrentNode, CurrentSublevel)

  ; Ignore anything except normal nodes. See the manual for
  ; XMLNodeType() for an explanation of the other node types.
  ;
  If XMLNodeType(*CurrentNode) = #PB_XML_Normal
  
    ; Add this node to the tree. Add name and attributes
    ;
    Text$ = GetXMLNodeName(*CurrentNode) + " (Attributes: "
        
    If ExamineXMLAttributes(*CurrentNode)
      While NextXMLAttribute(*CurrentNode)
        Text$ + XMLAttributeName(*CurrentNode) + "=" + Chr(34) + XMLAttributeValue(*CurrentNode) + Chr(34) + " "
      Wend
    EndIf
    
    Text$ + ")"
    
    AddGadgetItem(#TreeGadget, -1, Text$, 0, CurrentSublevel)
        
        
    ; Now get the first child node (if any)
    ;    
    *ChildNode = ChildXMLNode(*CurrentNode)
    
    ; Loop through all available child nodes and call this procedure again
    ;
    While *ChildNode <> 0
      FillTree(*ChildNode, CurrentSublevel + 1)      
      *ChildNode = NextXMLNode(*ChildNode)
    Wend        
  
  EndIf

EndProcedure

FileName$ = OpenFileRequester("Choose XML file...", "", "XML files (*.xml)|*.xml|All files (*.*)|*.*", 0)
If FileName$ <> ""

  If LoadXML(#XML, FileName$)

    ; Note: 
    ;   The LoadXML() succeed if the file could be read. This does not mean that
    ;   there was no error in the XML though. To check this, XMLStatus() can be
    ;   used.
    ;
    ; Display an error message if there was a markup error
    ;
    If XMLStatus(#XML) <> #PB_XML_Success
      Message$ = "Error in the XML file:" + Chr(13)
      Message$ + "Message: " + XMLError(#XML) + Chr(13)
      Message$ + "Line: " + Str(XMLErrorLine(#XML)) + "   Character: " + Str(XMLErrorPosition(#XML))
      MessageRequester("Error", Message$)
    EndIf
    
    ; Note:
    ;   Even if there was an error in the XML, all nodes before the error position
    ;   are still accessible, so open the window and show the tree anyway.
    ;
    If OpenWindow(#Window, 0, 0, 500, 500, "XML Example", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
      TreeGadget(#TreeGadget, 10, 10, 480, 480)
      
      ; Get the main XML node, and call the FillTree() procedure with it
      ;
      *MainNode = MainXMLNode(#XML)      
      If *MainNode
        FillTree(*MainNode, 0)
      EndIf
      
      ; Expand all nodes for a nicer view
      ;
      For i = 0 To CountGadgetItems(#TreeGadget) - 1
        SetGadgetItemState(#TreeGadget, i, #PB_Tree_Expanded)
      Next i
      
      ; Wait for the window close event.
      ;
      Repeat
        Event = WaitWindowEvent()
      Until Event = #PB_Event_CloseWindow
    EndIf
        
  Else
    MessageRequester("Error", "The file cannot be opened.")
  EndIf

EndIf






@++

Re: le XML et le Purebasic .... Merci d'avance pour vos répo

Publié : mar. 21/sept./2010 18:55
par 3d0uard0
Merci mais je ne comprend pas les commentaires (anglais) donc ça m'avance que légérement ...

Re: le XML et le Purebasic .. Lire les variables d'un ficher

Publié : mer. 22/sept./2010 15:05
par 3d0uard0
Si cela est possible de le faire avec un fichier .txt ou autre cela me vas aussi !!

Merci d'avance pour vos réponses !! Bonne après-midi !

PS : j'ai déjà chercher sur google et sur ce forum mais impossible de trouver quoique ce soit

Re: le XML et le Purebasic .. Lire les variables d'un ficher

Publié : mer. 22/sept./2010 15:20
par Ar-S
Si tu te créés un fichier txt tout con en inversant tes données, tu peux ainsi utiliser le systeme de préférence qui est enfantin à maitriser.

Par exemple ton fichier se nomme servpref.txt et contient :

Code : Tout sélectionner

[truc]
NOMSERVEUR = serveur_name$
RATEXP = rate_xp$
Ton programme ressemblerait à ça :

Code : Tout sélectionner

if OpenPreferences("servpref.txt")
  PreferenceGroup("truc")
  serveur.s="Nom de la variable serveur : "+ReadPreferenceString("NOMSERVEUR","")
  ratexp.s="Nom de la variable Rate Xp : "+ReadPreferenceString("RATEXP","")
  
  MessageRequester("Infos",serveur+chr(10)+ratexp) 
  end
else
  MessageRequester("Erreur","ça chie, je ne trouve pas servpref.txt") 
  end
endif
Voilou

Re: le XML et le Purebasic .. Lire les variables d'un ficher

Publié : mer. 22/sept./2010 18:02
par 3d0uard0
Ah ! Voilà ! Merci merci énormément !!