L'objet IXMLDOMNamedNodeMap ajoute le support pour les espaces de noms et l'itération par l'intermédaire de la collection de noeuds d'attribut.
Objet_NamedNodeMap = Objet_Node.attributes
Cet objet est une collection de noeuds typiquement utilisée pour les attributs.
Les noeuds contenus dans l'objet IXMLDOMNamedNodeMap peuvent être accédés par l'intermédiaire de leur nom ou de leur index passé en argument dans les différentes méthodes disponibles destinées à les manipuler.
Set Objet_Attribut = Objet_NamedNodeMap.getNamedItem(Nom) Objet_Attribut = Objet_NamedNodeMap.item(Index) Objet_Attribut = Objet_NamedNodeMap.removeNamedItem(Nom)
Des objets IXMLDOMAttribute peuvent être insérés dans une collection IXMLDOMNamedNodeMap en faisant appel à sa méthode setNamedItem.
Objet_Attribut = _ Objet_NamedNodeMap.setNamedItem(Objet_Attribute)
L'éxécution de Microsoft préserve l'ordre des attributs dans lequel ces derniers apparaissent dans la source XML. Les attributs supplémentaires sont ajoutés à la fin de la liste. Un attribut de'espace de noms (xmlns) est inséré comme le premier dans la liste si le nom de balise requiert l'espace de noms, ou immédiatement avant l'attribut qui emploie un espace de noms non déclaré.
La collection IXMLDOMNamedNodeMap est similaire à une liste de noeuds, toutefois la collection est active. En effet, l'ajout, le déplacement de noeuds et les modifications dans des noeuds, sont immédiatement répercutés au sein de la collection. En conséquence, deux requêtes successives sur des membres de la collection utilisant le même index peuvent retourner deux items différents, dépendant des changements dans la collection.
En outre, les modifications sur les objets nodaux sont immédiatement disponibles dans les noeuds obtenus à partir de la liste.
Lorsqu'une valeur par défaut est spécifiée dans le schéma pour un attribut et que ce dernier est déplacé, il est automatiquement regénéré avec la valeur par défaut, comme spécifié dans le standard du W3C. L'attribut réapparaît immédiatement, car la collection est active, avec une modfication correspondante dans le nombre d'items de la collection. En déplaçant un attribut avec un tel paramètrage par défaut, il faut de nouveau récupérer le nombre d'items dans la collection pour obtenir un compte précis. Il faut également réinitialiser n'importe quel index dans la collection.
Les PropriétésPropriété |
---|
Description |
Nombre = Objet_NamedNodeMap.length |
indique le nombre d'items dans la collection en lecture seule. |
Méthode |
---|
Description |
Set Objet_Attribut = Objet_NamedNodeMap.getNamedItem(Nom) |
récupère l'attribut avec le nom spécifié. |
Set Objet_Attribut = Objet_NamedNodeMap.getQualifiedItem(Nom_Base, URI_Espace_Noms) |
retourne l'attribut avec l'espace de noms et le nom de l'attribut spécifiés. |
Set Objet_Attribut = Objet_NamedNodeMap.item(Index) |
autorise l'accès aléatoire à des noeuds individuels à l'intérieur d'une collection, en lecture seule. |
Set Objet_Attribut = Objet_NamedNodeMap.removeNamedItem(Nom) |
enlève un attribut depuis une collection. |
Set Objet_Attribut = Objet_NamedNodeMap.removeQualifiedItem(Nom_Base, URI_Espace_Noms) |
enlève l'attribut avec l'espace de noms et le nom de l'attribut spécifiés. |
Objet_NamedNodeMap.reset() |
réinitialise le moteur d'itération (iterator). |
Set Objet_Attribut = Objet_NamedNodeMap.setNamedItem(Objet_Attribute) |
ajoute le noeud fourni à la collection. |
<html> <head> <script language="Javascript" type="text/javascript"> var Tab_TypeNoeud = new Array('NODE_ELEMENT', 'NODE_ATTRIBUTE', 'NODE_TEXT', 'NODE_CDATA_SECTION', 'NODE_ENTITY_REFERENCE', 'NODE_ENTITY', 'NODE_PROCESSING_INSTRUCTION', 'NODE_COMMENT', 'NODE_DOCUMENT', 'NODE_DOCUMENT_TYPE', 'NODE_DOCUMENT_FRAGMENT', 'NODE_NOTATION'); function Analyse() { var tab1 = '<table border="1" cellpadding="3" cellspacing="3" width="60%">' + '<tr><th width="10%">Noeud parent</th>' + '<th width="45%">Nom du Noeud</th>' + '<th width="45%">Type du Noeud</th></tr><tr>' + '<th colspan="3">Valeur du Noeud</th></tr>'; var tab2 = '</table>'; var Info; var Fichier_XML = Donnee_XML; if (Fichier_XML.parseError.errorCode != 0) { Info = '<h3>Le fichier XML est invalide.</h3>'; Info += '<table><tr><td><b>Code d'erreur</b></td><td><b>: </b>' + Fichier_XML.parseError.errorCode + '</td></tr>'; Info += '<tr><td><b>Description</b></td><td><b>: </b>' + Fichier_XML.parseError.reason + '</td></tr>'; Info += '<tr><td><b>Fichier</b></td><td><b>: </b>' + Fichier_XML.parseError.filepos + '</td></tr>'; Info += '<tr><td><b>Adresse du fichier</b></td><td><b>: </b>' + Fichier_XML.parseError.url + '</td></tr>'; Info += '<tr><td><b>Ligne responsable</b></td><td><b>: </b>' + Fichier_XML.parseError.srcText + '</td></tr>'; Info += '<tr><td><b>Numéro de Ligne</b></td><td><b>: </b>' + Fichier_XML.parseError.line + '</td></tr>'; Info += '<tr><td><b>Numéro de Colonne</b></td><td><b>: </b>' + Fichier_XML.parseError.linepos + '</td></tr></table>'; document.write(Info); return; } Affichage.innerHTML = tab1 + AffichageNoeudEnfant(Fichier_XML, 0) + tab2; } function AffichageNoeudEnfant(Noeud, Niveau) { var Resultat = ''; var Longueur = 0; var Num_Noeud = 0; var Objet_NamedNodeMap; var Index_Attribute; Objet_NamedNodeMap = Noeud.attributes; if (Objet_NamedNodeMap != null) { Longueur = Objet_NamedNodeMap.length; if (Longueur > 0) { for (Index_Attribute = 0; Index_Attribute < Longueur; Index_Attribute++) { Resultat += '<tr><th>' + Noeud.nodeName + '</th><td><b>' + Objet_NamedNodeMap(Index_Attribute).nodeName + '</b></td><td style="color:blue; font-weight:bold">' + Tab_TypeNoeud[Objet_NamedNodeMap(Index_Attribute).nodeType - 1] + '</td></tr><tr><td colspan="3">' + Objet_NamedNodeMap(Index_Attribute).nodeValue + '</td></tr>'; } } } Longueur = Noeud.childNodes.length; if (Longueur > 0) { for (Num_Noeud = 0; Num_Noeud < Longueur; Num_Noeud++) { Resultat += AffichageNoeudEnfant(Noeud.childNodes(Num_Noeud), Niveau + 1); } return Resultat; } } </script> </head> <body onload="Analyse()"> <XML id="Donnee_XML" src="logitheque.xml"></XML> <span id="Affichage"></span> </body> </html> |