L'objet IXMLDOMNode étend le noeud central avec un support pour les types de données, les espaces de noms, les DTD (document type definitions) et les schémas.
L'objet IXMLDOMNode est créé par l'intermédiaire de la méthode createNode appliquées à l'objet DOMDocument, permettant la création de quasiment tous les types de noeuds. Par ailleurs, d'autres méthodes de création plus ciblées existent afin de créer des noeuds précis à l'image de createAttribute ou encore createDocumentFragment.
Set Objet_Noeud = Objet_Document.createNode(1, Nom_Elt)
Les valeurs des noeuds peuvent être ajoutées au moyen de diverses commandes. Pour les noeuds éléments, il est nécessaire de créer un noeud textuel (createNodeText) dans lequel est stocké la valeur du noeud élément ou éventuellement attribut. Ensuite, à l'aide de la méthode appendChild, le l'objet IXMLNodeText est affecté dans le noeud correspondant.
Set Objet_Element = Objet_Document.createElement("nom") Set Objet_Text = Objet_Document.createNodeText(valeur) Objet_Element.appendChild Objet_Text Objet_Node_Existant.nodeValue = Nouvelle_Valeur
Un objet nodal peut être obtenu à partir d'une multitude de méthodes et de propriétés.
Set Objet_Noeud = _ Objet_NodeList.selectSingleNode("//elements/element") Set Objet_Noeud = Objet_Node.firstChild
Dans un document XML, tout est décomposable en noeud. Ainsi, les instructions de traitements, la définition de type de document, l'élément racine, l'ensemble des descendants, les attributs ou encore le texte et les références d'entités sont tous des noeuds distingués par un type particulier.
Les propriétés nodeType et nodeTypestring appliquées à un objet nodal permettent de déterminer le type de noeud soit respectivement par une valeur numérique, soit par une chaîne de caractères.
Valeur_numérique = Objet_Node.nodeType Chaîne = Objet_Node.nodeTypeString
Le modèle d'objet de document XML propose plusieurs solutions afin de naviguer dans l'arborescence d'un document. Il existe des méthodes de sélection de noeuds (selectSingleNode, selectNodes), de liste de noeuds (childNodes, attributes) ou de fragment de document (createDocumentFragment).
Set Objet_ListeNoeuds = Objet_Node.attributes Set Objet ListeNoeuds = _ Objet_Document.SelectNodes("/element[@attribut='valeur']")
A partir de là, il devient possible de parcourir des objets en avant (nextSibling, lastChild) ou en arrière (previousSibling, firstChild) de remonter au parent (parentNode) ou au document (ownerDocument).
Set Objet_Noeud = Objet_Node.previousSibling Set Objet_Noeud = Objet_Node.ownerDocument
Sur un noeud courant, l'extraction de la valeur (nodeValue, text) ou de ses caractèristiques à l'instar de son type de donnée (dataType) et de son nom (nodeName), peuvent s'effectuer aisément à l'aide des outils fournis.
Les Propriétésnom_element = Objet_Node.nodeName valeur = Objet_Node.nodeValue URI_espace_de_nom = Objet_Node.namespaceURI
Propriété |
---|
Description |
Set Objet_NamedNodeMap = Objet_Node.attributes |
contient la liste des attributs pour ce noeud en lecture seule. |
Chaîne = Objet_Node.baseName |
retourne le nom de base pour le nom qualifié avec l'espace de noms en lecture seule. |
Set Objet_NodeList = Objet_Node.childNodes |
contient une liste de noeuds contenant les enfants en lecture seule. |
Valeur = Objet_Node.dataType |
indique le type de données pour ce noeud en lecture et écriture. |
Set Objet_Node = Objet_Node.definition |
retourne la définition d'un noeud dans le DTD ou le schéma en lecture seule. |
Set Objet_Node = Objet_Node.firstChild |
contient le premier enfant de ce noeud en lecture seule. |
Set Objet_Node = Objet_Node.lastChild |
contient le dernier noeud enfant en lecture seule. |
Chaîne = Objet_Node.namespaceURI |
retourne l'URI (Uniform Resource Identifier) pour l'espace de noms en lecture seule. |
Set Objet_Node = Objet_Node.nextSibling |
contient le frère suivant de ce noeud dans la liste d'enfants des parents en lecture seule. |
Chaîne = Objet_Node.nodeName |
contient le nom qualifié de l'élément, l'attribut, la référence d'entité ou une chaîne de caractères fixée pour d'autres types de noeud en lecture seule. |
Valeur = Objet_Node.nodeType |
spécifie le type de noeud XML DOM qui détermine des valeurs valides et si le noeud peut avoir des noeuds enfants en lecture seule. |
Valeur = Objet_Node.nodeTypedValue |
contient la valeur de ce noeud exprimée dans son type de donnée défini en lecture et écriture. |
Chaîne = Objet_Node.nodeTypeString |
retourne le type de noeud dans une forme de chaîne de caractères en lecture seule. |
Valeur = Objet_Node.nodeValue |
contient le texte associé avec le noeud en lecture et écriture. |
Set Objet_Document = Objet_Node.ownerDocument |
retourne la racine du document qui contient ce noeud en lecture seule. |
Set Objet_Node = Objet_Node.parentNode |
contient le noeud parent en lecture seule. |
True | False = Objet_Node.parsed |
contient la valeur True si le noeud et tous ses descendants ont été analysées et instanciées, ou False si n'importe quels noeuds restent à être analysées en lecture seule. |
Valeur = Objet_Node.prefix |
retourne le préfixe d'espace de noms en lecture seule. |
Set Objet_Node = Objet_Node.previousSibling |
contient le frère gauche de ce noeud en lecture seule. |
True | False = Objet_Node.specified |
indique si le noeud est explicitement spécifié ou dérivé d'une valeur par défaut dans le DTD ou le schéma en lecture seule. |
Chaîne = Objet_Node.text |
contient le contenu textuel du noeud et de sa sous-arborescence en lecture et écriture. |
Valeur = Objet_Node.xml |
contient la représentation XML du noeud et de tous ses descendants en lecture seule. |
Méthode |
---|
Description |
Set Objet_Node.appendChild(Nouvel_Enfant) |
ajoute un nouvel enfant comme le dernier enfant de ce noeud. |
Set Objet_Node.cloneNode(Bool_Profondeur) |
crée un nouveau noeud qui est un double exact de ce noeud. |
true | false = Objet_Node.hasChildNodes() |
retourne True si le noeud a des enfants. |
Set Objet_Node = Objet_Node.insertBefore(Nouvel_Enfant, Référence) |
insère un noeud enfant à la gauche du noeud spécifié ou à la fin de la liste. |
Set Objet_Node = Objet_Node.removeChild(Noeud_Enfant) |
enlève le noeud enfant spécifié de la liste d'enfant et le retourne. |
Set Objet_Node = Objet_Node.replaceChild(Nouvel_Enfant, Ancien_Enfant) |
remplace l'ancien noeud enfant spécifié par le nouveau noeud enfant fourni dans le jeu d'enfants de ce noeud. |
Set Objet_NodeList = Objet_Node.selectNodes(Expression_Pattern) |
applique l'opération de mise en correspondance de modèles indiquée au contexte de ce noeud et retourne la liste de noeuds correspondants. |
Set Objet_Node = Objet_Node.selectSingleNode(Chaîne_Requête) |
applique l'opération de mise en correspondance de modèles indiquée au contexte de ce noeud et retourne la liste de premier noeud correspondant. |
true | false = Objet_Node.transformNode(Objet_StyleSheet) |
traite ce noeud et ses enfants utilisant la feuille de style de tranformation (XSLT) indiquée et retourne la transformation résultante. |
Objet_Node.transformNodeToObject(Feuille_Style, Objet) |
traite ce noeud et ses enfants utilisant la feuille de style de tranformation (XSLT) indiquée et retourne la transformation résultante dans l'objet fourni. |
<html> <head> <% Dim Objet_Document, fichier Dim affichage Set Objet_Document = Server.CreateObject("MSXML2.DOMDocument") Objet_Document.async = false fichier = Server.MapPath("logitheque.xml") Objet_Document.load fichier affichage = Visualise_Noeud(Objet_Document, 0) Function Visualise_Noeud(Objet_Noeud, nb_espaces) Dim resultat, i, nombre, nb_noeuds, Objet_Node resultat = "" For i = 1 To nb_espaces resultat = resultat & " " Next resultat = resultat & "<b style='color: blue; font-weight: bold'>" _ & Objet_Noeud.nodeName _ & "</b>(" & Objet_Noeud.nodeTypeString & ") : " _ & Objet_Noeud.nodeValue If Objet_Noeud.nodeType = 1 Then If Objet_Noeud.attributes.Length Then For Each Attribut In Objet_Noeud.attributes resultat = resultat & "[ <b>" & Attribut.nodeName _ & "</b>(" & Attribut.nodeTypeString & ") : " _ & Attribut.nodeValue & " ]<br>" Next Else resultat = resultat & "<br>" End If Else resultat = resultat & "<br>" End If nb_noeuds = Objet_Noeud.childNodes.length For nombre = 0 To nb_noeuds - 1 Set Objet_Node = Objet_Noeud.childNodes(nombre) resultat = resultat & Visualise_Noeud(Objet_Node, nb_espaces + 2) Next Visualise_Noeud = resultat End Function %> </head> <body> <div><%= affichage %></div> </body> </html> |