ASP3 Sous node xml

cs_Jackboy Messages postés 757 Date d'inscription vendredi 7 septembre 2001 Statut Membre Dernière intervention 19 juin 2008 - 15 janv. 2007 à 15:09
cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 - 15 janv. 2007 à 19:06
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

cs_Jackboy Messages postés 757 Date d'inscription vendredi 7 septembre 2001 Statut Membre Dernière intervention 19 juin 2008
15 janv. 2007 à 15:14
Pour le xml j'en en fait 4 attribut ex.:

<sitemap>
       
           
           
               
               
            
           
               
                   
                   
               
           
       
   

 
0
cs_Jackboy Messages postés 757 Date d'inscription vendredi 7 septembre 2001 Statut Membre Dernière intervention 19 juin 2008
15 janv. 2007 à 15:16
</sitemap>

(sa serai plus simple si on pourrait editer ici )
 
0
cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 4
15 janv. 2007 à 19:06
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
0
Rejoignez-nous