Bonsoir,
Je travaille sur des fichiers XML. Lors de la lecture d'un fichier XML est-il possible d'avoir des informations sur l'ensemble des attributs d'un noeud. Genre nombre, ordre.
La raison est que pour enregistrer les attributs d'un noeud , je détecte le dernier attribut pour déclencher l'enregistrement dans une base. Ca fonctionne mais la fédération sportive qui produit le fichier vient de changer l'ordre de attributs et donc ca ne fonctionne plus.
Je cherche a lire un XML en me démarquent de l'ordre des noeud et des attributs. Je pense que c'est comme cela que l'on doit procédé. (je découvre la gestion des Xml)
Je pourrais faire un programme test mais pas ce soir.
Merci
Bien cordialement
XML - ordre des attributs
XML - ordre des attributs
_____________________________________________________________
IMAC 21.5 2012 Core I5 - 2.70 Ghz. 16 GB NVIDIA GeForce GT 640M 512 Mo. MacOs OCPL Sonoma 14.3
MacBook Air M1 - 8Go - Sonoma 14.5
PureBasic 6.11 MacOS
IMAC 21.5 2012 Core I5 - 2.70 Ghz. 16 GB NVIDIA GeForce GT 640M 512 Mo. MacOs OCPL Sonoma 14.3
MacBook Air M1 - 8Go - Sonoma 14.5
PureBasic 6.11 MacOS
Re: XML - ordre des attributs
Bonjour,
J'ai fais un programme test pour traiter les données XML ce qui m'a conduit vers une solution.
Lors de la lecture des attributs il faut mettre l"enregistrement de ces attributs, chargé dans une variable structurée temporaire, à la fin de la scrutation et nom de détecté le dernier attribut.
J'insère tout de même mon programme de test si ca peu aider
Cordialement
J'ai fais un programme test pour traiter les données XML ce qui m'a conduit vers une solution.
Lors de la lecture des attributs il faut mettre l"enregistrement de ces attributs, chargé dans une variable structurée temporaire, à la fin de la scrutation et nom de détecté le dernier attribut.
J'insère tout de même mon programme de test si ca peu aider
Cordialement
Code : Tout sélectionner
#Window = 0
#TreeGadget = 0
#XML = 0
Structure TireurStruc
nom.s
prenom.s
sexe.s
club.s
EndStructure
Structure ArbitreStruc
nom.s
prenom.s
sexs.s
club.s
EndStructure
Dim TabTireur.TireurStruc(10)
Dim TabArbitre.TireurStruc(10)
Procedure FillTree(*CurrentNode, CurrentSublevel)
If XMLNodeType(*CurrentNode) = #PB_XML_Normal
Text$ = GetXMLNodeName(*CurrentNode) + ": "
If ExamineXMLAttributes(*CurrentNode)
While NextXMLAttribute(*CurrentNode)
Text$ + " Attribute:" + XMLAttributeName(*CurrentNode) + "=" + Chr(34) + XMLAttributeValue(*CurrentNode) + Chr(34) + " "
Debug " 2"+Text$
Wend
EndIf
Text$+ " " + GetXMLNodeText(*CurrentNode)
Debug " 1"+ Text$
Debug "enregistre ici "
AddGadgetItem(#TreeGadget, -1, Text$, 0, CurrentSublevel)
*ChildNode = ChildXMLNode(*CurrentNode)
While *ChildNode <> 0
FillTree(*ChildNode, CurrentSublevel + 1)
*ChildNode = NextXMLNode(*ChildNode)
Wend
EndIf
EndProcedure
XML$ = "<BaseCompetitionIndividuelle>"+
"<Tireurs>" +
"<Tireur Sexe='M' ID='11890' Points='245,26' Classement='1445' Club='La Rapière Hérouville' Licence='011889' Lateralite='D' Nation='FRA' DateNaissance='08.07.1976' Prenom='Hermann' Nom='CHALUME'/>" +
"<Tireur Sexe='M' ID='14665' Points='' Classement='' Club='Rouen' Licence='014664' Lateralite='D' Nation='FRA' DateNaissance='22.05.1988' Prenom='Florian' Nom='CRASPIN'/>" +
"</Tireurs>" +
"<Arbitres>" +
"<Arbitre Categorie='' Sexe='M' ID='45479' Club='DIEPPE' Licence='045478' Nation='FRA' DateNaissance='12.05.1995' Prenom='Nicolas' Nom='PELLETTE' Ligue='NORMANDIE'/>" +
"<Arbitre Categorie='' Sexe='M' ID='23128' Club='Nancy' Licence='023127' Nation='FRA' DateNaissance='29.10.1996' Prenom='Nathan' Nom='FROGY' Ligue='NORMANDIE'/>" +
"</Arbitres>" +
"</BaseCompetitionIndividuelle>"
If ParseXML(#Xml, XML$) ; And XMLStatus(#Xml) = #PB_XML_Success
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
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
For i = 0 To CountGadgetItems(#TreeGadget) - 1
SetGadgetItemState(#TreeGadget, i, #PB_Tree_Expanded)
Next i
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
EndIf
Else
MessageRequester("Error", "The file cannot be opened.")
EndIf
_____________________________________________________________
IMAC 21.5 2012 Core I5 - 2.70 Ghz. 16 GB NVIDIA GeForce GT 640M 512 Mo. MacOs OCPL Sonoma 14.3
MacBook Air M1 - 8Go - Sonoma 14.5
PureBasic 6.11 MacOS
IMAC 21.5 2012 Core I5 - 2.70 Ghz. 16 GB NVIDIA GeForce GT 640M 512 Mo. MacOs OCPL Sonoma 14.3
MacBook Air M1 - 8Go - Sonoma 14.5
PureBasic 6.11 MacOS