Afficher dans word du xml

Signaler
Messages postés
5
Date d'inscription
mardi 14 mars 2006
Statut
Membre
Dernière intervention
24 avril 2008
-
Messages postés
5
Date d'inscription
mardi 14 mars 2006
Statut
Membre
Dernière intervention
24 avril 2008
-
Bonjour,
J'espère que vous pourriez m'aider.
J'explique mon problème :
J'ai un fichier xml et j'aimerais afficher toutes les skills de chaque expérience, mais le problème c'est qu'il arrive à afficher que la première skill.

- le fichier xml :
<?xml version="1.0" encoding="ISO-8859-1" ?>
<cv>
<experiences>
<experience>
<exp_from>2008-02-11</exp_from>
<exp_to>2008-05-30</exp_to>
<skills>
<skill>MySQL</skill>
<skill>PHP</skill>
<skill>SQL</skill>
<skill>XML</skill>
</skills>
</experience>
<experience>
<exp_from>2008-01-01</exp_from>
<exp_to>2008-02-11</exp_to>
<skills>
<skill>C++</skill>
<skill>ACCES</skill>
</skills>
</experience>
</experiences>
</cv>

- ma macro word :
 
ForEach general In xmlDoc.SelectNodes("/cv/experiences/experience")

exp_from = general.SelectSingleNode("exp_from").Text
exp_to = general.SelectSingleNode("exp_to").Text
 
Selection.TypeTextText:=exp_from & vbCrLf
Selection.TypeTextText:=exp_to& vbCrLf

ForEach skil In general.SelectNodes("/skills")

skill = skil.SelectSingleNode("skill").Text
Selection.TypeTextText:=skill & ", "

Next

Next
 

Merci d'avance.

6 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
tu fais un For Each sur "/skills" puis tu lis un "skill"

en fait, tu devrais faire ton For Each sur "/skills/skill"
Messages postés
5
Date d'inscription
mardi 14 mars 2006
Statut
Membre
Dernière intervention
24 avril 2008

Merci pour ta réponse rapide.

Avec ce que tu m'as dit et le code qu'il y a plus haut rien ne s'affiche.

pour affiche je suis obliger de faire :


For Each skil In xmlDoc.SelectNodes("/cv/experiences/experience/skills")

        skill = skil.SelectSingleNode("skill").Text

        Selection.TypeText Text:=skill & ", "

Next


Mais alors seulement la première skill est afficher.

Je ne comprends pas, théoriquement ca devrait marcher.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
tu ne m'as pas compris, je crois...

For Each general In xmlDoc.SelectNodes("/cv/experiences/experience")
exp_from = general.SelectSingleNode("exp_from").Text
exp_to = general.SelectSingleNode("exp_to").Text

Selection.TypeText Text:=exp_from & vbCrLf
Selection.TypeText Text:=exp_to& vbCrLf

For Each skil In general.SelectNodes("/skills/skill")
Selection.TypeText Text:=skill.Text & ", "
Next
Next
Messages postés
5
Date d'inscription
mardi 14 mars 2006
Statut
Membre
Dernière intervention
24 avril 2008

si, si, je t'avais compris.
J'ai essayé et rien ne s'affiche. J'ai ressayé mon code et rien ne s'affiche n'ont plus c'est pour cela que j'ai essayé :

ForEach general In xmlDoc.SelectNodes("/cv/experiences/experience")

exp_from = general.SelectSingleNode("exp_from").Text
exp_to = general.SelectSingleNode("exp_to").Text
 
Selection.TypeTextText:=exp_from & vbCrLf
Selection.TypeTextText:=exp_to& vbCrLf

For Each skil In xmlDoc.SelectNodes("/cv/experiences/experience/skills")

skill = skil.SelectSingleNode("skill").Text
Selection.TypeTextText:=skill & ", "

Next

Next

et la première skill de chaque expériences s'affiche.
Mais comme il y a plusieur ligne qui porte le même nom "skill", je pense qu'il croit qu'il y en a qu'une.
Mais je pense que la réponse se trouve quand même plus proche de ma première solution.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
erreur de copier coller...

pas de / avant skills :

For Each general In xmlDoc.SelectNodes("/cv/experiences/experience")
exp_from = general.SelectSingleNode("exp_from").Text
exp_to = general.SelectSingleNode("exp_to").Text

Selection.TypeText Text:=exp_from & vbCrLf
Selection.TypeText Text:=exp_to& vbCrLf

For Each skil In general.SelectNodes("skills/skill")
Selection.TypeText Text:=skill.Text & ", "
Next
Next




j'ai nettoyé un peu la chose :

Sub test()
Dim oXml As DOMDocument
Dim oExperience As IXMLDOMNode
Dim oSkill As IXMLDOMNode
Set oXml = New DOMDocument
oXml.Load "c:\a.xml"

For Each oExperience In oXml.SelectNodes("/cv/experiences/experience")
Selection.TypeText oExperience.SelectSingleNode("exp_from").Text & vbNewLine & _
oExperience.SelectSingleNode("exp_to").Text & vbNewLine
For Each oSkill In oExperience.SelectNodes("skills/skill")
Selection.TypeText oSkill.Text & ", "
Next oSkill
Selection.TypeText vbNewLine
Next oExperience
End Sub
Messages postés
5
Date d'inscription
mardi 14 mars 2006
Statut
Membre
Dernière intervention
24 avril 2008

Vraiment un grand merci.
J'ai testé et ca marche
Vous m'enlevez une énorme épine du pied.
Encore merci de la rapidité, et surtout de la solution.