cs_bobby3
Messages postés14Date d'inscriptionmardi 24 janvier 2006StatutMembreDernière intervention24 mars 2009
-
16 mai 2008 à 15:41
cs_bobby3
Messages postés14Date d'inscriptionmardi 24 janvier 2006StatutMembreDernière intervention24 mars 2009
-
16 mai 2008 à 19:38
Bonjour à tous
Voila dans le cadre d'un application sous vb 2005 il faut que j'extraie certaine donné d'un fichier xml
Pour ca pas de probleme mais les données récupéré sous sous la forme <menu>Production</menu> ou <sousmenu>Menuiseries1</sousmenu>.J'aurai pu récupérér directement ce qu'il y a à l'intérieur des balises mais Je suis obligé de les récuperer comme ca car il faut que je les trie ( mettre celle avec les balises <menu> dans un tableau de chaine appelé menu et celle avec les balises <sousmenu> dans un autre tableau, j'utilise Left pour savoir lesquels vont dans tel ou teltableau)). Le probleme est que un coup que mes données sont récupérés, triés et tout ca, j'aurai besoin d'avoir accès à ce qu'il y a à l'intérieur des balises, et j'ai pas trouvé de fonction, meme sur msdn, qui me fasse en sorte que je puisse récupérer las sous chaine comprise entre le 7ème caractère et le 7ème caractère à partir de la fin.
Si vous avez une fonction ou une technique pour pallier à ce probleme, vos reponses sont les bienvenus
Merci d'avance
cs_bobby3
Messages postés14Date d'inscriptionmardi 24 janvier 2006StatutMembreDernière intervention24 mars 2009 16 mai 2008 à 16:16
merci pour vos réponses
casy non substring ne sait pas faire ca en tout cas pas en visual basic (en php on peut je croit), en vb substring a 2 paramêtre, la position de départ et et le nombre de caractère a selectionner a partir de cette position, mais on ne peut pas selectionner la position a partir de la fin pour aller vers le début ( c'est d'ailleurs un gros manque lorsque comme moi on ne sait pas le nombre de caractère que l'on va récupérer)
Renfield tu as raison avec xpath par exemple il ya moyen de controler très facilement les balises et leurs contenus
Mais c'est bon j'ai trouvé la solution, ce que j'ai fait c'est au lieu de renvoyer un tableau avec toute les données dedans j'ai retourné deux tableau dans lequel j'ai fait le tri en meme temps que je leur ais assigné des chaines
i = Listmenu.Count
' on compte le nombre de menu qu'il a trouvé
For j = 0
To i - 1
'on va chercher les 4 premier caractères des chaineschaine = Microsoft.VisualBasic.Left(Listmenu(j).OuterXml, 4)
If (chaine =
"<men")
Then
' si la balise est de la forme <menu> on met la chaine dans un tableau de menuz = z + 1
tableauMenu(z) = Listmenu(j).InnerText
Else
' sinon on met la chaine dans un tableau de sous menuk = k + 1
tableau_sousMenu(k) = Listmenu(j).InnerText
End
If
Next
Catch ex
As Exception
'au cas ou l'individu n'aurai droit a aucun menuMsgBox(
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 16 mai 2008 à 16:20
"...le nombre de caractère a selectionner a partir de cette position, mais
on ne peut pas selectionner la position a partir de la fin..."
Et le nombre de caractère à sélectionner ne serait-il pas par hasard, la longueur totale - la position à partir de la fin ??????
Substring (ou Mid en VB6) permet toutes les manipulations de découpages de chaines. Les fonctions Left, Right, .... ne sont en réalité que des surcharges de la fonction de base Substring.
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 16 mai 2008 à 19:03
Si
Mais moi aussi je conseil de gérer les fichiers XML avec les outils XML fourni par le framework au lieu de "s'amuser" avec des SubString.
Dim Doc As New Xml.XmlDocument
Doc.Load("C:\Fichier.xml")
Après tu listes tes "menu" ou tes "sousmenu" plus ou moins comme tu l'entend, dans des boucles. Genre:
For Each Elem As Xml.XmlElement In Doc.DocumentElement.ChildNodes
Console.WriteLine("Menu: " & Elem.InnerText)
For Each SousElem As Xml.XmlElement In Elem.ChildNodes
Console.WriteLine("Soumenu: " & Elem.InnerText)
Next
Next
cs_bobby3
Messages postés14Date d'inscriptionmardi 24 janvier 2006StatutMembreDernière intervention24 mars 2009 16 mai 2008 à 19:38
tu as raison renfield je ne croyai que chercher le nombre de caractère de la chaine a chaque fois était une opération trop lourde, mais ca a l'air assez basique
de tout facon mon probleme est resolé
le sujet est clos
merci a tous