Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Le XmlNamedNodeMap est décrit dans la spécification W3C (World Wide Web Consortium) en tant que NamedNodeMap et doit gérer un ensemble non ordonné de nœuds avec la possibilité de référencer des nœuds par leur nom ou leur index. La seule façon dont vous avez accès à un XmlNamedNodeMap est lorsqu’un XmlNamedNodeMap est retourné par le biais d’une méthode ou d’une propriété. Il existe trois méthodes ou propriétés qui retournent un XmlNamedNodeMap :
XmlElement.Attributs
XmlDocumentType.Entities ;
XmlDocumentType.Notations (Notations de type de document XML)
Par exemple, la propriété XmlDocumentType.Entities obtient la collection de nœuds XmlEntity déclarée dans la déclaration de type de document. Cette collection est retournée en tant que XmlNamedNodeMap et vous pouvez effectuer une itération dans la collection à l’aide de la propriété Count et afficher les informations d’entité. Pour obtenir un exemple d’itération via un XmlNamedNodeMap, consultez Entities.
XmlAttributeCollection est dérivé de XmlNamedNodeMap et seuls les attributs sont modifiables, tandis que les notations et les entités sont en lecture seule. À l’aide de XmlNamedNodeMap pour les attributs, vous pouvez obtenir des nœuds pour ces attributs en fonction de leurs noms XML. Cela permet de manipuler facilement la collection d’attributs sur un nœud d’élément. Cela peut être contrasté directement avec XmlNodeList, qui implémente également l’interface IEnumerable , mais avec un accesseur d’index plutôt qu’une chaîne. Les méthodes RemoveNamedItem et SetNamedItem sont utilisées uniquement sur un XmlAttributeCollection. L’ajout ou la suppression d’une collection d’attributs, que vous utilisiez l’implémentation AttributeCollection ou XmlNamedNodeMap , modifie la collection d’attributs sur l’élément. L’exemple de code suivant montre comment déplacer un attribut et créer un attribut.
Imports System
Imports System.Xml
Class test
Public Shared Sub Main()
Dim doc As New XmlDocument()
doc.LoadXml("<root> <child1 attr1='val1' attr2='val2'> text1 </child1> <child2 attr3='val3'> text2 </child2> </root> ")
' Get the attributes of node "child2 "
Dim ac As XmlAttributeCollection = doc.DocumentElement.ChildNodes(1).Attributes
' Print out the number of attributes and their names.
Console.WriteLine(("Number of Attributes: " + ac.Count))
Dim i As Integer
For i = 0 To ac.Count - 1
Console.WriteLine((i + 1 + ". Attribute Name: '" + ac(i).Name + "' Attribute Value: '" + ac(i).Value + "'"))
Next i
' Get the 'attr1' from child1.
Dim attr As XmlAttribute = doc.DocumentElement.ChildNodes(0).Attributes(0)
' Add this attribute to the attributecollection "ac".
ac.SetNamedItem(attr)
''attr1' will be removed from 'child1' and added to 'child2'.
' Print out the number of attributes and their names.
Console.WriteLine(("Number of Attributes: " + ac.Count))
For i = 0 To ac.Count - 1
Console.WriteLine((i + 1 + ". Attribute Name: '" + ac(i).Name + "' Attribute Value: '" + ac(i).Value + "'"))
Next i
' Create a new attribute and add to the collection.
Dim attr2 As XmlAttribute = doc.CreateAttribute("attr4")
attr2.Value = "val4"
ac.SetNamedItem(attr2)
' Print out the number of attributes and their names.
Console.WriteLine(("Number of Attributes: " + ac.Count))
For i = 0 To ac.Count - 1
Console.WriteLine((i + 1 + ". Attribute Name: '" + ac(i).Name + "' Attribute Value: '" + ac(i).Value + "'"))
Next i
End Sub 'Main
End Class 'test
using System;
using System.Xml;
class test {
public static void Main() {
XmlDocument doc = new XmlDocument();
doc.LoadXml( "<root> <child1 attr1='val1' attr2='val2'> text1 </child1> <child2 attr3='val3'> text2 </child2> </root> " );
// Get the attributes of node "child2"
XmlAttributeCollection ac = doc.DocumentElement.ChildNodes[1].Attributes;
// Print out the number of attributes and their names.
Console.WriteLine( "Number of Attributes: "+ac.Count );
for( int i = 0; i < ac.Count; i++ )
Console.WriteLine( (i+1) + ". Attribute Name: '" +ac[i].Name+ "' Attribute Value: '"+ ac[i].Value +"'" );
// Get the 'attr1' from child1.
XmlAttribute attr = doc.DocumentElement.ChildNodes[0].Attributes[0];
// Add this attribute to the attributecollection "ac".
ac.SetNamedItem( attr );
// 'attr1' will be removed from 'child1' and added to 'child2'.
// Print out the number of attributes and their names.
Console.WriteLine( "Number of Attributes: "+ac.Count );
for( int i = 0; i < ac.Count; i++ )
Console.WriteLine( (i+1) + ". Attribute Name: '" +ac[i].Name+ "' Attribute Value: '"+ ac[i].Value +"'" );
// Create a new attribute and add to the collection.
XmlAttribute attr2 = doc.CreateAttribute( "attr4" );
attr2.Value = "val4";
ac.SetNamedItem( attr2 );
// Print out the number of attributes and their names.
Console.WriteLine( "Number of Attributes: "+ac.Count );
for( int i = 0; i < ac.Count; i++ )
Console.WriteLine( (i+1) + ". Attribute Name: '" +ac[i].Name+ "' Attribute Value: '"+ ac[i].Value +"'" );
}
}
Pour afficher un exemple de code supplémentaire qui montre qu’un attribut est supprimé d’un AttributeCollection, consultez XmlNamedNodeMap.RemoveNamedItem, méthode. Pour plus d’informations sur les méthodes et les propriétés, consultez XmlNamedNodeMap Members.