Decoupage chaine de caractère

cs_bobby3 Messages postés 14 Date d'inscription mardi 24 janvier 2006 Statut Membre Dernière intervention 24 mars 2009 - 16 mai 2008 à 15:41
cs_bobby3 Messages postés 14 Date d'inscription mardi 24 janvier 2006 Statut Membre Dernière intervention 24 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

7 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
16 mai 2008 à 15:48
Et SubString ne sait pas faire ça ??????

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
16 mai 2008 à 15:49
joues avec les objets qui tournent autour de l'XML
0
cs_bobby3 Messages postés 14 Date d'inscription mardi 24 janvier 2006 Statut Membre Dernière intervention 24 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(

"Pas de menu trouvé")

End
Try

merci quand meme pour vos réponses!
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
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.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
16 mai 2008 à 16:22
entre le 7eme du début et le 7eme a partir de la fin

a.Substring(7, a.length-14)

non ?
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
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

Easy
0
cs_bobby3 Messages postés 14 Date d'inscription mardi 24 janvier 2006 Statut Membre Dernière intervention 24 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
0
Rejoignez-nous