XML: Comment parser un fichier xml simplement, pour en ressortir des éléments et

max_95 Messages postés 9 Date d'inscription mardi 23 décembre 2003 Statut Membre Dernière intervention 3 juin 2008 - 7 janv. 2004 à 11:32
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 - 17 août 2007 à 09:19
J'aurais besoin d'aide pour parser un fichier xml.

J'aimerais lire un fichier xml, puis afficher les informations contenues dans ce fichier dans une listbox. Puis a partir de cette liste, pouvoir selectionner une ligne, et que cette ligne s'affiche dans plusieurs textbox, pour modifier cette ligne.

(Note: j'ai bien referencé XML dans VB6)

Un exemple:

J'ai un fichier clients.xml :

<?xml version= "1.0" encoding="UTF-8"?>
<clients>
<client id="1">
1
<nom>nicolas Ray</nom>
nicolas

<login>NRAY</login>
NRAY

<categorie>Masculin</categorie>
nicolas.r@hotmail.com
<telephone>0223664422</telephone>
ch.des cigarettes
<npa>1007</npa>
<Ville>Lausanne</Ville>
</client>
<client id ="2">
2
<nom>raphael schmid</nom>
raphael

<login>RSCH</login>
RSCH

<categorie>Masculin</categorie>
smashing@hotmail.com
<telephone>0223642266</telephone>
domaine
<npa>1260</npa>
<Ville>Nyon</Ville>
</client>
<client id= "4">
4
<nom>Bernard Morin</nom>
Bernard

<login>subalashi</login>
caisson

<categorie>Masculin</categorie>

<telephone/>
Broadway
<npa>75000</npa>
<Ville>Paris</Ville>
</client>
<client id ="3">
3
<nom>meyer david</nom>
meyer

<login>David</login>
meyer

<categorie>Masculin</categorie>
lord_barabas@hotmail.com
<telephone>5454</telephone>
av du grey 78
<npa>1018</npa>
<Ville>lausanne</Ville>
</client>
<client id= "5">
5
<nom>asd sd</nom>
asd

<login>asd</login>
asd

<categorie>Feminin</categorie>
ad
<telephone>ad</telephone>
asd
<npa>asd</npa>
<Ville>ad</Ville>
</client>
<client id ="6">
6
<nom>Bobo Bobo</nom>
Bobo

<login>Bobo</login>
Bobo

<categorie>Masculin</categorie>
Bobo
<telephone>Bobo</telephone>
Bobo
<npa>Bobo</npa>
<Ville>Bobo</Ville>
</client>
</clients>



J'aimerais que ce fichier s'affiche dans une listbox avec pour chaque ligne prenant cette forme:

id nom prenom login password categorie email telephone adresse npa ville

(note: l'id ici est un attribut )

Et lorsque je clique sur une ligne, cela m'affiche dans chaque textbox correspondante, l'id, le nom le prenom, etc...

Il y aurait donc 11 textbox.

J'ai essayé de trouver un tutorial me permettant de faire cela, mais je n'arrive pas a trouver, et j'avoue que je suis débutant en VB...

Quelqu'un pourrais svp me montrer le code pour arriver a ce resultat? C'est assez urgent, et je commence a desesperer...
J'ai trouver sur le site de vbfrance un code affichant le fichier xml dans un treeview, mais je ne trouve pas cela très ergonomique dans mon cas..

Je vous remercie d'avance pour votre aide!!!

(j'ai fait un copier coller d'une ancieene question car j'ai le même problème mais y a pas de réponse sur le forum...)

max
A voir également:

9 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
7 janv. 2004 à 15:17
'ajouter une listbox list1
'ajouter une textbox txtname
'ajouter une reference a mxml micr.. XML dans le menu projet
'ne fonctionne que sous vb6 fonction split

Public documentXML As New DOMDocument
Public clients As IXMLDOMNodeList
Public client As IXMLDOMNode

Function LoadDocument()

documentXML.async = False
documentXML.Load "c:\\test.xml"
Set clients = documentXML.selectNodes("//clients/client")
For Each client In clients
List1.AddItem client.selectSingleNode("@id").Text & " - " & client.selectSingleNode("nom").Text
Next client

End Function

Private Sub Form_Load()
Call LoadDocument
End Sub

Private Sub List1_Click()
Dim tab1 As Variant
Dim id As String
tab1 = Split(List1.List(List1.ListIndex), " - ")
id = tab1(0)
Set client = documentXML.selectSingleNode("//client[@id='" & id & "']/nom")
txtName.Text = client.Text
End Sub

Le code n'est pas complet mais je pense que tu arrivera a trouver comment le completer ;-)
0
cs_labout Messages postés 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 8
7 janv. 2004 à 16:01
labout
Si tu le souhaite j'ai un exemple que je peux t'envoyer
Le traitement du XML alimente un ListView
0
max_95 Messages postés 9 Date d'inscription mardi 23 décembre 2003 Statut Membre Dernière intervention 3 juin 2008
7 janv. 2004 à 16:37
Pour Labout

Oh oui ça pourrais bien m'aider
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
7 janv. 2004 à 16:45
'ajouter une listbox list1
'ajouter une textbox txtname
'ajouter une reference a mxml micr.. XML dans le menu projet
'ne fonctionne que sous vb6 fonction split

'lvwclient une listview

Public documentXML As New DOMDocument
Public clients As IXMLDOMNodeList
Public client As IXMLDOMNode

Function LoadDocument()
Dim Item As ListItem
Dim id As String
Dim nom As String
documentXML.async = False
documentXML.Load "c:\\test.xml"
Set clients = documentXML.selectNodes("//clients/client")

For Each client In clients
Set Item = lvwClient.ListItems.Add
id = client.selectSingleNode("@id").Text
nom = client.selectSingleNode("nom").Text
List1.AddItem id & " - " & nom
Item.Text = id
Item.SubItems(1) = nom
Next client

End Function

Private Sub Form_Load()
lvwClient.View = lvwReport
Dim ch As ColumnHeader
Set ch = lvwClient.ColumnHeaders.Add(, , "Id")
Set ch = lvwClient.ColumnHeaders.Add(, , "Nom")
lvwClient.FullRowSelect = True

Call LoadDocument
End Sub

Private Sub List1_Click()
Dim tab1 As Variant
Dim id As String
tab1 = Split(List1.List(List1.ListIndex), " - ")
id = tab1(0)
Set client = documentXML.selectSingleNode("//client[@id='" & id & "']/nom")
txtName.Text = client.Text
End Sub

Private Sub lvwClient_ItemClick(ByVal Item As MSComctlLib.ListItem)
Set client = documentXML.selectSingleNode("//client[@id='" & Item.Text & "']/nom")
txtName.Text = client.Text
End Sub
0

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

Posez votre question
cs_labout Messages postés 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 8
7 janv. 2004 à 16:54
labout
Donnes moi ton adresse eMail je t'envoie l'exemple
Si tu ne souhaites pas la donner, la mienne est
boutresse@normandnet.fr
Contacte moi
Je ne mets pas sur le source, je ne mets plus de VB seulement des .Net et puis les remarques sont souvent peu agréables.
0
max_95 Messages postés 9 Date d'inscription mardi 23 décembre 2003 Statut Membre Dernière intervention 3 juin 2008
7 janv. 2004 à 17:11
Voici mon adresse mail:
mourad.emf@caramail.com
0
cs_JALALM Messages postés 2 Date d'inscription lundi 14 avril 2003 Statut Membre Dernière intervention 23 avril 2008
19 avril 2005 à 16:57
j'aiun exemplepour toi mailme please :jalal.med77@caramail.com
0
omarjock Messages postés 14 Date d'inscription dimanche 12 novembre 2000 Statut Membre Dernière intervention 7 avril 2008
17 août 2007 à 08:48
bonjour j'ai besoin d'aide urgent.

je suis entrain de developper une application en vb pour la lecture de fichier log de serveur.
le probleme c'est que j'ai besoin d'une fonction permettant d'extraire le texte entre deux texte a savoir "cell {" et "}".
svp c'est urgent et merci 
voici mon mail : omarjock@yahoo.fr  
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
17 août 2007 à 09:19
Salut

regardes du coté des regexp l'exemple est en C# mais facilement traduisible en VB.net
ou même en VB6 (je crois que la scripting library contenant les regexp est sur me meme principe)

Sinon il suffit de prendre une chaine à partir de la position X à la position Y avec un substring

publicvoid TestParseURL()
{
string url = "http://www.cambiaresearch.com"
+ "/Cambia3/snippets/csharp/regex/uri_regex.aspx?id=17#authority";

string regexPattern = @"^(?<s1>(?<s0>[^:/\?#]+):)?(?"
+ @"//(?[^/\?#]*))?(?[^\?#]*)"
+ @"(?<q1>\?(?<q0>[^#]*))?"
+ @"(?<f1>#(?<f0>.*))?";

Regex re = new Regex(regexPattern, RegexOptions.ExplicitCapture);
Match m = re.Match(url);

lblOutput.Text = " URL: " + url + " ";

lblOutput.Text + =
m.Groups["s0"].Value + " (Scheme without colon)
";
lblOutput.Text +=
m.Groups["s1"].Value + " (Scheme with colon)
";
lblOutput.Text +=
m.Groups["a0"].Value + " (Authority without //)
";
lblOutput.Text +=
m.Groups["a1"].Value + " (Authority with //)
";
lblOutput.Text +=
m.Groups["p0"].Value + " (Path)
";
lblOutput.Text +=
m.Groups["q0"].Value + " (Query without ?)
";
lblOutput.Text +=
m.Groups["q1"].Value + " (Query with ?)
";
lblOutput.Text +=
m.Groups["f0"].Value + " (Fragment without #)
";
lblOutput.Text +=
m.Groups["f1"].Value + " (Fragment with #)
";

}
0
Rejoignez-nous