Urgent Fichier Xml, merci de votre aide

Signaler
Messages postés
118
Date d'inscription
dimanche 12 octobre 2003
Statut
Membre
Dernière intervention
28 mars 2008
-
Messages postés
118
Date d'inscription
dimanche 12 octobre 2003
Statut
Membre
Dernière intervention
28 mars 2008
-
Bonjour,
je vias essayer d'etre le plus clair possible

Mon problème est avec la lecture de fichier XML.

Je suis capable de lire à un endroit précis.

Ex:

Set objXML = CreateObject("MSXML.DOMDocument")

objXML.selectSingleNode("//Mission/PlanInfo/MissionName").Text

Je suis capable aller dans ma balise
//Mission/PlanInfo/MissionName

Mon problème est que mon fichier ne comporte pas toujours le meme nombre de ligne :

ex:

-
- <Zone>
-
<Latitude>-70.92355352</Latitude>
<longitude>47.01558897</longitude>


-
<Latitude>-71.03448227</Latitude>
<longitude>46.93955915</longitude>


-
<Latitude>-71.12920794</Latitude>
<longitude>46.87848602</longitude>


-
<Latitude>-71.16535326</Latitude>
<longitude>46.84358709</longitude>


-

Le nombre de point dans ma balide PlanInfo n'Est pas fixe. Alors j'aimerais savoir comment lire tous les enfants de ma balise PlanInfo

Merci de votre aide
NightCourrier

Nightcourrier :)

23 réponses

Messages postés
2336
Date d'inscription
samedi 14 juillet 2001
Statut
Membre
Dernière intervention
5 mai 2009
6
tu as pas dit si tu étais en .net ou VB6

mais si tu es en .Net j'ai faite ce petit module

Imports System.Xml

Module XML
    Public tableau() As String
    Private root As XmlNode
    Public Function openXML(ByVal fichier As String)
        Dim XMLStruct As New XmlDocument

        XMLStruct.Load(fichier)
        root = XMLStruct.DocumentElement

    End Function

    Public Function lectureXML(ByVal valeur As String) As String
        Dim temp As String
        Dim position As Integer

        temp = root.Item(valeur).InnerText
        position = InStr(temp, vbCr)
        If position <> 0 Then
            Return (Mid(temp, 1, position - 1))
        Else
            Return (temp)
        End If
    End Function

    Public Function lectureXML(ByVal parent() As String, ByVal valeur As String) As String
        Dim i As Integer
        Dim temp As String
        Dim position As Integer
        Dim xmlTemp As XmlNode

        xmlTemp = root.Item(parent(0))
        If isOpenXML(xmlTemp) Then
            For i = 1 To UBound(parent)
                xmlTemp = xmlTemp.Item(parent(i))
            Next i
            temp = xmlTemp.Item(valeur).InnerText
            position = InStr(temp, vbCr)
            If position <> 0 Then
                Return (Mid(temp, 1, position - 1))
            Else
                Return (temp)
            End If
        End If
    End Function

    Public Function isOpenXML(ByVal xmlTemp As XmlNode) As Boolean
        Dim temp As String
        Try
            temp = xmlTemp.InnerText
            Return True
        Catch
            Return False
        End Try
    End Function
End Module


elle permet d'ouvrir un fichier et de le lire de 2 façons. Soit lire une racine en envoyant que sont nom, soit en envoyant le nom qu,on veux lire et un tableau qui se trouve à être le chemin

mon tableau en haut, c'est au lieu d,en crée un a chaque fois, je réutilise le même
Messages postés
118
Date d'inscription
dimanche 12 octobre 2003
Statut
Membre
Dernière intervention
28 mars 2008

MErci de ton aide mais je suis en vb6 :'(

Nightcourrier :)
Messages postés
2336
Date d'inscription
samedi 14 juillet 2001
Statut
Membre
Dernière intervention
5 mai 2009
6
ça devrais se ressembler beaucoup, XML est assez récent, donc la différence entre VB6 et VB.net doit-être minime
Messages postés
118
Date d'inscription
dimanche 12 octobre 2003
Statut
Membre
Dernière intervention
28 mars 2008

Je test le tout et je te redonne des nouvelles merci !!

Nightcourrier :)
Messages postés
118
Date d'inscription
dimanche 12 octobre 2003
Statut
Membre
Dernière intervention
28 mars 2008

Cela ne fonctionne pas ....

Il n'accewpte pas le Import et j'ai pas événement load dans

XMLStruct.Load(fichier)

.load n'existe pas ..

j'Esais de résoudre mon problème ..
Nightcourrier :)
Messages postés
2336
Date d'inscription
samedi 14 juillet 2001
Statut
Membre
Dernière intervention
5 mai 2009
6
j'ai dit semblable, pas identique :-) lol

c'est sur le import existe pas en Vb6, mais la structure de lecture devrait y ressembler
Messages postés
118
Date d'inscription
dimanche 12 octobre 2003
Statut
Membre
Dernière intervention
28 mars 2008

Salut Dragon,
je me suis débrouiller pour avec ma lecture du fichier XML ... :) MErci.

J'aurais une autres questions ...

J'aimerais ouvrir mon fichier XML avec world...
Cela fonctionne, cependant je ne suis pas capable de lui donner un format xml ...

J'espère que tu pourras me m'Aider

Merci nightcourrier :)

Nightcourrier :)
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
tu pourrais te simplfier la vie :

Menu Projet > References > Microsoft XML

un petit bout de code (aucun test n'est ici effectué....)

Private Sub Form_Load()
    Dim XMl As New DOMDocument30
    XMl.Load "C:\a.xml"
    
    Dim Node As IXMLDOMNode
    For Each Node In XMl.selectNodes("PlanInfo/Zone").Item(0).childNodes
        If Node.nodeName Like "Point*" Then
            List1.AddItem "lat. " & Node.childNodes(0).Text & "  - " & "lon. " & Node.childNodes(1).Text
        End If
    Next Node
End Sub
Messages postés
118
Date d'inscription
dimanche 12 octobre 2003
Statut
Membre
Dernière intervention
28 mars 2008

bonjour Dragon,
encore moi ....

J'aimerais imprimer mon XMl a partir de vb 6 ... as tu une ider ..

Nightcourrier :)
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
tu peux toujours passer par un WebBrowser.....
Messages postés
2336
Date d'inscription
samedi 14 juillet 2001
Statut
Membre
Dernière intervention
5 mai 2009
6
suis d'accord avec Renfield, sinon utiliser un treeview
Messages postés
118
Date d'inscription
dimanche 12 octobre 2003
Statut
Membre
Dernière intervention
28 mars 2008

Merci à vous 2 !!!! mes problème sont résolu !! :)

Nightcourrier :)
Messages postés
118
Date d'inscription
dimanche 12 octobre 2003
Statut
Membre
Dernière intervention
28 mars 2008

J'ai encore p-e un petit problème en fin compte hehe

Dragon j'ai utiliser ton code ...

Dim XMl As New DOMDocument30
XMl.Load "C:\a.xml"

Dim Node As IXMLDOMNode
For Each Node In XMl.selectNodes("PlanInfo/Zone").Item(0).childNodes
If Node.nodeName Like "Point*" Then
List1.AddItem "lat. " & Node.childNodes(0).Text & " - " & "lon. " & Node.childNodes(1).Text
End If
Next Node

je veux refaire un

For Each Node In XMl.selectNodes("PlanInfo/AutreChose").Item(0).childNodes
If Node.nodeName Like "AutreChose*" Then
List1.AddItem "lat. " & Node.childNodes(0).Text & " - " & "lon. " & Node.childNodes(1).Text
End If
Next Node

Il me dit tjrs For Control Already in use

J'ai fais set node = nothing ...

cela ne fonctionne .. si tu as une ID fais moi signe merci !

Nightcourrier :)
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
Donnes nous un extrait de ton fichier XML et de ce que tu souhaite extraire....

(au passage, ce bout de code est pas de Dragon ;) )
Messages postés
2336
Date d'inscription
samedi 14 juillet 2001
Statut
Membre
Dernière intervention
5 mai 2009
6
ouin, c,est ce que je me disais aussi lol selectNodes("PlanInfo/AutreChose"). c'est pas de moi lol
Messages postés
118
Date d'inscription
dimanche 12 octobre 2003
Statut
Membre
Dernière intervention
28 mars 2008

Oupp.. Scuser...

Bon toute marche !!! :)

Je me demande une dernièrre chose ( j'espère )

Il t'il possible de cacher un fils

Ex:

+
+

J'aimerais cela exemple cacher Point2 mais pouvoir aller chercher les informations que Point2 contient.

Je ne sais pas ci cela est possible.

Merci les gars de votre aide ! :)

Nightcourrier :)
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
"cacher" un fils ?? je vois pas ce que tu veux dire....

tu l'a affiché dans un WebBrowser,et tu souhaite en masquer une partie ?
Messages postés
118
Date d'inscription
dimanche 12 octobre 2003
Statut
Membre
Dernière intervention
28 mars 2008

salut Renfield,

Oui Exactement, Je créer un fil qui contient des informations qui sont utile pour mon programme et non pour l'utilisateur j'aiemrais cacher un fils

Mon fichier XML est comme une base de données. Mon programme load des informations d'un fichier XML...

Merci de m'aider ...

Nightcourrier :)
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
tu peux toujours afficher une version legerement differente de ton fichier
Messages postés
118
Date d'inscription
dimanche 12 octobre 2003
Statut
Membre
Dernière intervention
28 mars 2008

Ouin ... ce n'est pas ce que j'aurais aimé .. entk cela n'est pas grave ..

Je vais continuer a chercher une autre méthode ...

Merci

Nightcourrier :)