cs_ov3rdoze
Messages postés414Date d'inscriptionlundi 19 juillet 2004StatutMembreDernière intervention23 septembre 2014
-
23 juil. 2007 à 15:20
cs_ov3rdoze
Messages postés414Date d'inscriptionlundi 19 juillet 2004StatutMembreDernière intervention23 septembre 2014
-
24 juil. 2007 à 13:34
Bonjour
J'utilise des fichiers XML. Je propose à l'utilisateur de ne lister que certains noeuds en fonction d'un menu déroulant qui propose :
- Tous les dossiers : Là pas de problème
- Dossiers de l'année en cours : OK
- Dossiers hors-delais : C'est celui-ci qui pose problème
Voici la structure du fichier XML (uniquement la partie qui nous interesse) :
<dossier ouverture="23/07/2007" fermeture="">
<mois>2</mois>
<jours>12</jours>
</dossier>
Un dossier hors délais est un dossier qui n'a pas de date de fermeture et dont la date d'ouverture + phase < date d'aujourd'hui.
J'utilise un XmlNodeList dans lequel je ne met que les noeuds à afficher, mais dans le cas des dossiers hors-délais, je ne sais pas comment faire :
- Je ne trouve pas d'expression X-Path qui décrive ce cas
- Je n'arrive pas, en parcourant le fichier noeud par noeud, à ajouter ceux qui m'interressent à la liste (Je ne sais pas comment ajouter)
cs_drahcir
Messages postés745Date d'inscriptionmardi 30 novembre 2004StatutMembreDernière intervention15 septembre 20094 24 juil. 2007 à 11:29
Salut,
Essaie ça :
' ArrayList qui va contenir les noeuds à afficher
Dim alNode as New ArrayList
' nodeList représente la liste des noeuds "dossier" (utilse X-Path)
For Each node as XmlNode in nodeList
If node.Attribute("fermeture").Value.Equals(String.Empty) Then
Dim day As Date = CDate(node.Attribute("ouverture").Value)
day = day.AddDays(node.Attributes("jours").Value
day = day.AddMonths(node.Attributes("mois").Value
If day.CompareTo(Date.Now) < 0 Then
alNode.Add(node)
End If
End If
Next
Tu n'auras plus qu'à parcourir alNode pour afficher les noeuds s'y trouvant.
Rq : je n'ai pas testé donc je ne te garanti pas le résultat...
cs_ov3rdoze
Messages postés414Date d'inscriptionlundi 19 juillet 2004StatutMembreDernière intervention23 septembre 2014 24 juil. 2007 à 11:51
Merci pour ta réponse
Je ne sais pas exactement comment fonctionne arrayList. Dans le cas de XmlNodeList, si je modifie un noeud de la liste, le noeud est modifé également dans le fichier (après Fichier.save(...) bien évidement). Est-ce que ce sera le cas avec arrayList?
En fait la question est est-ce que les éléments du arrayList pointent simplement vers ce qu'on a mis dedans, ou bien est-ce qu'il s'agit de 'copies'?
cs_drahcir
Messages postés745Date d'inscriptionmardi 30 novembre 2004StatutMembreDernière intervention15 septembre 20094 24 juil. 2007 à 12:01
Non, la modification de l'Arraylist ne modifiera en rien ton fichier xml.
Si tu veux le modifier, il faut en effet modifier les noeuds de ta collection.
Je suis passé par une ArrayList tout simplement parce que je trouve ça simple à utiliser... mais tu pourrais aussi instancier un nouvel "XmlNodeList" et y ajouté les noeuds.
Quant à son contenu, je ne sais pas exactement, mais je dirais qu'il s'agit de copies.
Est-ce que le bout de code que je t'ai donnée fonctionne?