Lecture d'attributs avec XmlReader
Les attributs sont autorisés sur trois types de nœud :
- Element ;
- XmlDeclaration ;
- Déclaration DocumentType
Pour un élément, le déplacement dans les attributs est différent de la lecture des valeurs des attributs sur un nœud XmlDeclaration ou une déclaration DocumentType.
Lecture d'attributs sur des éléments
Lorsque vous êtes positionné sur un nœud element, les méthodes MoveToAttribute vous permettent de naviguer dans la liste d'attributs de l'élément. Après que MoveToAttribute a été appelé, les propriétés du nœud telles que Name, NamespaceURI, Prefix, etc. reflètent les propriétés de cet attribut et non celles de l'élément qui le contient.
Un attribut n'a pas toujours besoin d'être spécifié sur un élément. Une DTD ou un schéma peuvent définir une valeur par défaut pour des attributs sur des éléments. Par exemple, si <!ATTLIST e a CDATA "123">
se trouve dans la DTD, la valeur « 123 » est assignée à l'attribut « a
» de l'élément « e
» si cet attribut « a
» de l'élément « e
» n'est pas défini dans le document XML. Lorsque vous utilisez des méthodes qui se déplacent parmi les attributs, les attributs qui reçoivent une valeur d'une DTD ou d'un schéma sont utilisés comme les attributs auxquels est assignée une valeur dans le flux XML. Il existe une manière de déterminer par programmation comment l'attribut a reçu sa valeur, qui consiste à utiliser la propriété IsDefault. La propriété IsDefault retourne la valeur true si le nœud actuel est un attribut qui n'a pas été spécifié dans le flux XML mais qui provient de la déclaration attribute par défaut de la DTD.
Remarque Suivant le type de lecteur utilisé, cette propriété n'est pas toujours applicable.
Le tableau suivant indique les valeurs que la propriété IsDefault peut retourner.
Implémentation de XmlReader | Valeurs retournées |
---|---|
XmlTextReader | false, car aucune information DTD n'est présente. |
XmlValidatingReader | true si le nœud actuel est un attribut dont la valeur a été générée à partir de la valeur par défaut définie dans la DTD ou dans le schéma. false si la valeur de l'attribut a été explicitement spécifiée dans le flux XML. |
XmlNodeReader | true si la DTD est définie dans XmlDocument ; sinon false. |
XsltReader | false, car aucune information DTD (nœuds DOCTYPE) n'est exposée dans le modèle de données XPath. |
Lorsque vous êtes positionné sur un attribut, la méthode GetAttribute est utilisée pour extraire la valeur de cet attribut.
Attributs sur d'autres types de nœud
XmlTextReader et XmlValidatingReader exposent les attributs uniquement sur les nœuds Element, XmlDeclaration et DocumentType. Lorsque vous implémentez les classes XmlReader pour le type de nœud XmlDeclaration, les propriétés Version, Standalone et Encoding sont retournées sous la forme d'une chaîne dans la propriété Value de XmlDeclaration. La propriété Value ne peut pas être retournée comme string.Empty. Si elle est vide, la classe DOM XmlDocument et les autres classes pouvant dépendre de ces informations ne peuvent pas se charger à partir de XmlReader.
Voir aussi
Lecture de XML avec XmlReader | Position du nœud actuel dans XmlReader | Paramètres des propriétés sur XmlReader | Comparaison d'objets à l'aide de XmlNameTable avec XmlReader | Lecture du contenu d'éléments et d'attributs | Contenu ignoré avec XmlReader | Lecture et expansion de références d'entité | Comparaison entre XmlReader et le lecteur SAX | Lecture de données XML avec XmlTextReader | Lecture d'arborescences de nœuds avec XmlNodeReader | Validation de code XML avec XmlValidatingReader | Création de lecteur XML personnalisé | XmlReader, classe | XmlReader, membres | XmlNodeReader, classe | XmlNodeReader, membres | XmlTextReader, classe | XmlTextReader, membres | XmlValidatingReader, classe | XmlValidatingReader, membres