ASP3 Sous node xml

Signaler
Messages postés
757
Date d'inscription
vendredi 7 septembre 2001
Statut
Membre
Dernière intervention
19 juin 2008
-
Messages postés
1642
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
-
Bonjour !

J'ai un fichier xml donc je récupère et j'affiche les nodes. Pour le moment j'afficher tous les node et sous node, mais j'aimerai pourvoir détecter le parent du node, car j'ai des droits d'accès sur les liens, donc je décide si un user a droit ou non de voir un lien, je ne veux donc pas afficher les enfant du lien. Comme dans mon exemple si bas, valid a 1 indique que je peux voir le lien, mais comme le lien 3 je ne peux pas (-1) je ne veux pas faire afficher le lien 3.1 etc. meme s'il sont à 1, car le noeud parent est non valid.

ex.:
<sitemap>
       
           
           
               
               
            
           
               
                   
                   
               
           
       
   

Voici le script que j'ai fait pour le moment... Merci de votre coup de pouce !!!

<%
            qResultat = request.querystring("resultat")
            if qResultat = "" then
                qResultat = -1
            end if
            strFileXml = Server.MapPath("test.xml")

            Set objXML = Server.CreateObject("MSXML2.DOMDocument")

            objXML.load(strFileXml)

            Set objItem = objXML.documentElement.selectSingleNode("item")
            set objXML = nothing
           
            Set objItemChild = objItem.getElementsByTagName("item")
            set objItem = nothing
           
            Dim intobjItemChild
            intobjItemChild = objItemChild.length

            Dim Nom, Url, Id
       
            Dim EndNode
            EndNode = 0
            For i=0 To objItemChild.length -1

                  set node_noeud = objItemChild.item(i)
               
                if node_noeud.attributes.item(2).nodeValue <> "-1" then
                    if node_noeud.attributes.item(4).nodeValue <> qResultat and EndNode > -1 then
                        Response.Write("<td>&nbsp;&nbsp;" & node_noeud.attributes.item(3).nodeValue & "")
                        if (objItemChild.length -1) = i then
                        else
                            response.write "&nbsp;></td>"
                        end if
                       
                    else
                        if EndNode > -1 then
                            Response.Write("<td>&nbsp;&nbsp;" & node_noeud.attributes.item(3).nodeValue & "")
                            EndNode = -1
                        end if
                    end if 
                end if
               
                set node_noeud = nothing
               
              next

            %>

3 réponses

Messages postés
757
Date d'inscription
vendredi 7 septembre 2001
Statut
Membre
Dernière intervention
19 juin 2008

Pour le xml j'en en fait 4 attribut ex.:

<sitemap>
       
           
           
               
               
            
           
               
                   
                   
               
           
       
   

 
Messages postés
757
Date d'inscription
vendredi 7 septembre 2001
Statut
Membre
Dernière intervention
19 juin 2008

</sitemap>

(sa serai plus simple si on pourrait editer ici )
 
Messages postés
1642
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
3
Salut,
C'est pour ce genre de traitement que les fonctions récursives sont utiles.
Tu devrais créer une fonction AfficherNode qui prend en paramètre un node, et dedans tu fais :

1. Tu test si le lien correspondant à ce node doit être visible. Si oui, tu passes au 2, si non, Exit Sub.
2. Tu affiches le HTML du lien.
3. Tu fais une boucle sur tonNode.getElementByTagName("item").
4. Dans cette boucle tu rappelles ta propre fonction AfficherNode en passant le sous-item.

Ainsi, si un élément parent n'est pas visible, la fonction ne sera jamais appellée pour les sous-items et donc ils ne seront jamais affichés.
Après, dans ton code tu as juste à faire AfficherNode(objItem) et c'est tout.

A++

<hr width="100%" size="2" />Nurgle (Antoine) - MSP