'*** Définitions du chemin de l'image et initiation de celle ci. Dim xmlNavImage As XPathNavigator Dim MyImage As Bitmap '*** Définition d'une image de base au cas où il n'y aurait pas de réponse au bout du chemin indiqué. PictureBox1.Image = New Bitmap("SansImage.jpg") '*** Puis navigation vers l'image cible qui est envoyée au Picturebox. Dim xPathImage As String = xPathRef & "/ImagFile" xmlNavImage = xpathDoc.CreateNavigator().SelectSingleNode(xPathImage) Try MyImage = New Bitmap(xmlNavImage.InnerXml) PictureBox1.Image = CType(MyImage, Image) Catch ex As ArgumentException End Try
Dim FilePathImg As String = My.Application.Info.DirectoryPath & "\..\..\ressources\appimg"
My.Application.Info.DirectoryPathrecherche le dossier de l'exécutable soit le debug.
\..\..\permet de remonter 2 fois dans l'arborescence des fichier de l'application soit au niveau
'*** Définitions du chemin de l'image et initiation de celle ci. Dim xmlNavImage As XPathNavigator Dim MyImage As Bitmap '*** Définition d'une image de base au cas où il n'y aurait pas de réponse au bout du chemin indiqué. PictureBox1.Image = New Bitmap(FilePathImg & "SansImage.jpg") '*** Puis navigation vers l'image cible qui est envoyée au Picturebox. Dim xPathImage As String = xPathRef & "/ImagFile" xmlNavImage = xpathDoc.CreateNavigator().SelectSingleNode(xPathImage) Try MyImage = New Bitmap(FilePathImg & xmlNavImage.InnerXml) PictureBox1.Image = CType(MyImage, Image) Catch ex As ArgumentException End Try
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionImports System.Xml Imports System.IO Public Class Form1 Dim fichier As String = "monFich.xml" 'Chemin du fichier XML à compléter si pas dans le "debug" de l'application. Private Sub OpenFile(ByVal pattern As String, ByVal recepteur As ListBox) '*** pattern = l'expression XPath pour rechercher les noeuds correspondants. '*** recepteur = le contrôle afficheur. '*** Représente un document XML en mémoire et charge les données XML spécifiées Dim doc As XmlDocument = New XmlDocument() doc.Load(fichier) '*** Sélectionne une liste de nœuds correspondant à l'expression XPath recherchée, ' et les stocke dans une collection Dim nodeList As XmlNodeList Dim root As XmlElement = doc.DocumentElement nodeList = root.SelectNodes(pattern) '*** Reste à les récupérer dans la ListBox. For Each ref As XmlNode In nodeList recepteur.Items.Add(ref.InnerXml) Next End Sub Private Sub ElemLie(ByVal pattern As String, ByVal valNode As String, ByVal position As Integer, ByVal recepteur As ListBox) '*** pattern = l'expression XPath pour rechercher les noeuds correspondants. '*** valNode = la valeur cherchée. '*** psition = position du noeud frère dans l'arborescence du noeud parent. '*** recepteur = le contrôle afficheur. '*** Représente un document XML en mémoire et charge les données XML spécifiées Dim doc As XmlDocument = New XmlDocument() doc.Load(fichier) '*** Sélectionne une liste de nœuds correspondant à l'expression XPath recherchée, ' et les stocke dans une collection Dim nodeList As XmlNodeList Dim root As XmlElement = doc.DocumentElement nodeList = root.SelectNodes(pattern) '*** Repère le modèle cliqué, remonte à son parent pour redescendre et sélectionner ' un de ses frères, par sa position dans la liste du noeud parent. For Each modele As XmlNode In nodeList If modele.InnerText = valNode Then recepteur.Items.Add(modele.ParentNode.ChildNodes.Item(position).InnerText) End If Next End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click OpenFile("/quincaillerie/objet/Modele", ListBox1) End Sub Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged ElemLie("/quincaillerie/objet/Modele", ListBox1.SelectedItem, 1, ListBox2) End Sub End Class
Private Sub RecherchValDim(ByVal choix As String) '*** On change de méthode en utilisant la technologie xPath. ' Paraît que c'est plus rapide que XmlDocument Dim xpathDoc As XPathDocument Dim xmlNav As XPathNavigator '*** Requête : recherche du premier noeud "objet", ayant un noeud enfant dont la ' la valeur est "choix", soit la ref cliquée et enfin ' sélectionner le noeud recherché (ici "ValDim_A" par exemple). Dim xPathRef As String = "/quincaillerie/objet[Ref=""" & choix & """]/ValDim_A" '*** Chargement du document XML avec la classe XPathDocument (comme XmlDocument) xpathDoc = New XPathDocument(fichier) '*** Création d'un navigateur dont on utilise les méthodes. Ici pour sélectionner ' un seul noeud qui correspond à la requête définie plus haut. xmlNav = xpathDoc.CreateNavigator().SelectSingleNode(xPathRef) MessageBox.Show(xmlNav.Name & ", " & xmlNav.InnerXml) End Sub Private Sub ListBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox2.SelectedIndexChanged '*** Définition de la valeur cliquée. Dim choix As String = ListBox2.SelectedItem RecherchValDim(choix) End Sub
Texts/[Ref=""" & choix & """]
'*** Requête : recherche du premier noeud "objet", ayant un noeud enfant "Ref" ' dont la valeur correspond au choix du ListBox2. Dim xPathRef As String = "/quincaillerie/objet[Ref=""" & choix & """]"
Private Sub RecherchValDim(ByVal choix As String, ByVal recepteur As ListBox) '*** On change de méthode en utilisant la technologie xPath. ' Paraît que c'est plus rapide XmlDocument Dim xpathDoc As XPathDocument Dim xmlNavVal As XPathNavigator Dim xmlNavTexts As XPathNavigator '*** Requête : recherche du premier noeud "objet", ayant un noeud enfant "Ref" ' dont la valeur correspond au choix du ListBox2. Dim xPathRef As String = "/quincaillerie/objet[Ref=""" & choix & """]" '*** Ayant trouvé ce noeud parent, on descend dans l'arborescence de celui ci ' pour y extraire toutes les valeurs que l'on désire. Dim xPathText As String = xPathRef & "/Texts/Dim_A" Dim xPathVal As String = xPathRef & "/ValDim_A" '*** Chargement du document XML avec la classe XPathDocument (comme XmlDocument) xpathDoc = New XPathDocument(fichier) '*** Création d'un navigateur dont on utilise les méthodes. Ici pour sélectionner ' un seul noeud qui correspond à la requête définie plus haut. xmlNavVal = xpathDoc.CreateNavigator().SelectSingleNode(xPathVal) xmlNavTexts = xpathDoc.CreateNavigator().SelectSingleNode(xPathText) recepteur.Items.Add(xmlNavTexts.InnerXml & " : " & xmlNavVal.InnerXml) End Sub Private Sub ListBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox2.SelectedIndexChanged '*** Définition de la valeur cliquée. Dim choix As String = ListBox2.SelectedItem RecherchValDim(choix, ListBox3) End Sub
Private Sub RecherchValDim(ByVal choix As String, ByVal recepteur As ListBox) '*** On change de méthode en utilisant la technologie xPath. ' Paraît que c'est plus rapide XmlDocument Dim xpathDoc As XPathDocument Dim xmlNavVal As XPathNavigator Dim xmlNavTexts As XPathNavigator '*** Tableau des extensions de "Dim_" et de "ValDim_" Dim TIndex() As String = {"A", "B", "C", "D", "E", "F", "G"} '*** Requête : recherche du premier noeud "objet", ayant un noeud enfant "Ref" ' dont la valeur correspond au choix du ListBox2. Dim xPathRef As String = "/quincaillerie/objet[Ref=""" & choix & """]" '*** Chargement du document XML avec la classe XPathDocument (comme XmlDocument) xpathDoc = New XPathDocument(fichier) For Each idx As String In TIndex '*** Ayant trouvé ce noeud parent, on descend dans l'arborescence de celui ci ' pour y extraire toutes les valeurs que l'on désire. '*** Ici pour l'exemple, on va extraire les "Dim_" selon leur extension et ' leur adjoindre le "ValDim_" ayant la même extension. ' (Extensions définies dans le tableau "TIndex()" ). Dim xPathText As String = xPathRef & "/Texts/Dim_" & idx Dim xPathVal As String = xPathRef & "/ValDim_" & idx '*** Création d'un navigateur dont on utilise les méthodes. Ici pour sélectionner ' un seul noeud qui correspond à la requête définie plus haut. xmlNavVal = xpathDoc.CreateNavigator().SelectSingleNode(xPathVal) xmlNavTexts = xpathDoc.CreateNavigator().SelectSingleNode(xPathText) recepteur.Items.Add(xmlNavTexts.InnerXml & " : " & xmlNavVal.InnerXml) Next End Sub Private Sub ListBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox2.SelectedIndexChanged '*** Définition de la valeur cliquée. Dim choix As String = ListBox2.SelectedItem ListBox3.Items.Clear() RecherchValDim(choix, ListBox3) End Sub
For Each idx As String In TIndex '*** Ayant trouvé ce noeud parent, on descend dans l'arborescence de celui ci ' pour y extraire toutes les valeurs que l'on désire. '*** Ici pour l'exemple, on va extraire les "Dim_" selon leur extension et ' leur adjoindre le "ValDim_" ayant la même extension. ' (Extensions définies dans le tableau "TIndex()" ). Dim xPathText As String = xPathRef & "/Texts/Dim_" & idx Dim xPathVal As String = xPathRef & "/ValDim_" & idx '*** Création d'un navigateur dont on utilise les méthodes. Ici pour sélectionner ' un seul noeud qui correspond à la requête définie plus haut. xmlNavVal = xpathDoc.CreateNavigator().SelectSingleNode(xPathVal) xmlNavTexts = xpathDoc.CreateNavigator().SelectSingleNode(xPathText) recepteur.Items.Add(xmlNavTexts.InnerXml & " : " & xmlNavVal.InnerXml) Next '*** Définitions du chemin de l'image et initiation de celle ci. Dim xmlNavImage As XPathNavigator Dim MyImage As Bitmap '*** Définition d'une image de base au cas où il n'y aurait pas de réponse au bout du chemin indiqué. PictureBox1.Image = New Bitmap("SansImage.jpg") '*** Puis navigation vers l'image cible qui est envoyée au Picturebox. Dim xPathImage As String = xPathRef & "/ImagFile" xmlNavImage = xpathDoc.CreateNavigator().SelectSingleNode(xPathImage) Try MyImage = New Bitmap(xmlNavImage.InnerXml) PictureBox1.Image = CType(MyImage, Image) Catch ex As ArgumentException End Try End Sub