XmlNamespaceDeclarationsAttribute Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Spécifie que le paramètre, la valeur de retour, le membre de classe ou la propriété cible contient des préfixes associés aux espaces de noms utilisés dans un document XML.
public ref class XmlNamespaceDeclarationsAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue, AllowMultiple=false)]
public class XmlNamespaceDeclarationsAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue)]
public class XmlNamespaceDeclarationsAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue, AllowMultiple=false)>]
type XmlNamespaceDeclarationsAttribute = class
inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue)>]
type XmlNamespaceDeclarationsAttribute = class
inherit Attribute
Public Class XmlNamespaceDeclarationsAttribute
Inherits Attribute
- Héritage
- Attributs
Remarques
L’attribut XmlNamespaceDeclarationsAttribute ne peut être appliqué qu’une seule fois dans une classe à un champ ou une propriété qui retourne un XmlSerializerNamespaces objet.
Vous XmlNamespaceDeclarationsAttribute pouvez stocker les préfixes et les espaces de noms associés utilisés dans un document XML. Par exemple, une utilisation courante de l’attribut consiste à stocker des données XPath, car elles sont définies par le document World Wide Web Consortium nommé XPath (XML Language) version 1.0. En bref, un XPath est une chaîne qui contient de nombreux préfixes d’espace de noms et noms locaux, ainsi que d’autres syntaxes.
Le langage XPath permet l’association d’un préfixe à un chemin d’accès et l’utilisation du préfixe dans le document XML. Par exemple, le document XML suivant nommé « select » contient un préfixe (« cal ») associé à un URI spécifique (http://www.cohowinery.com/calendar/
). L’élément contient un attribut nommé « path » qui contient le XPath.
<select xmlns:cal ="http://www.cohowinery.com/calendar/" path="cal:appointments/@startTime" />
Le schéma pour cela peut être :
<element name="select">
<complexType>
<simpleContent>
<attribute name="path" />
</simpleContent>
</complexType>
</element>
Sans le XmlNamespaceDeclarationsAttributepréfixe , l’association entre le préfixe et l’espace de noms est perdue.
Pour conserver l’association entre le préfixe et l’URI d’espace de noms, ajoutez un membre qui retourne un XmlSerializerNamespaces objet et appliquez l’attribut XmlNamespaceDeclarationsAttribute au membre, comme indiqué dans le code C# et Visual Basic suivants :
// C#
public class Select {
[XmlAttribute] public string path;
[XmlNamespaceDeclarations] public XmlSerializerNamespaces xmlns;
}
' Visual Basic
Public Class Select
<XmlAttribute> Public path As String
<XmlNamespaceDeclarations> Public xmlns As XmlSerializerNamespaces
End Class
Lorsqu’il est sérialisé, le schéma du document XML généré contient l’élément XSD (XML Schema Definition) nommé appinfo
. L’élément contient également un élément de métadonnées nommé keepNamespaceDeclarations
, défini sur le nom du membre qui contient les déclarations d’espace de noms. Le fragment XML suivant montre le schéma :
<xs:element name="select">
<xs:complexType>
<xs:annotation>
<xs:appinfo>
<keepNamespaceDeclarations>xmlns</keepNamespaceDeclarations>
</xs:appinfo>
</xs:annotation>
<xs:simpleContent>
<xs:attribute name="path" />
</xs:simpleContent>
</xs:complexType>
</xs:element>
Lors de la désérialisation, le xmlns
champ contient un XmlSerializerNamespaces objet qui contient toutes les définitions de préfixe d’espace de noms.
Lors de la sérialisation, l’utilisateur peut ajouter des paires d’espaces de noms de préfixe à l’objet à l’aide XmlSerializerNamespaces de la Add méthode. Ceci est illustré dans le code C# et Visual Basic suivants :
// C#
using System;
using System.IO;
using System.Xml.Serialization;
[XmlRoot("select")]
public class Select {
[XmlAttribute]
public string xpath;
[XmlNamespaceDeclarations]
public XmlSerializerNamespaces xmlns;
}
public class Test {
public static void Main(string[] args) {
Select mySelect = new Select();
mySelect.xpath = "myNS:ref/@common:y";
mySelect.xmlns = new XmlSerializerNamespaces();
mySelect.xmlns.Add("MyNS", "myNS.tempuri.org");
mySelect.xmlns.Add("common", "common.tempuri.org");
XmlSerializer ser = new XmlSerializer(typeof(Select));
ser.Serialize(Console.Out, mySelect);
}
}
// Output:
// <?xml version="1.0" encoding="IBM437"?>
// <select xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
// xmlns:common="common.tempuri.org" xmlns:MyNS="myNS.tempuri.org" xpath="myNS:ref/@common:y" />
' Visual Basic
Imports System
Imports System.IO
Imports System.Xml.Serialization
<XmlRoot("select")> _
Public Class SelectPath
<XmlAttribute> _
Public xpath As String
<XmlNamespaceDeclarations> _
public xmlns As XmlSerializerNamespaces
End Class
Public Class Test
Public Shared Sub Main()
Dim mySelect As SelectPath = New SelectPath()
mySelect.xpath = "myNS:ref/@common:y"
mySelect.xmlns = New XmlSerializerNamespaces()
mySelect.xmlns.Add("MyNS", "myNS.tempuri.org")
mySelect.xmlns.Add("common", "common.tempuri.org")
Dim ser As XmlSerializer = New XmlSerializer(mySelect.GetType)
ser.Serialize(Console.Out, mySelect)
End Sub
End Class
'Output:
' <?xml version="1.0" encoding="IBM437"?>
' <select xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
' xmlns:common="common.tempuri.org" xmlns:MyNS="myNS.tempuri.org" xpath="myNS:ref/@common:y" />
Notez également que le membre auquel l’attribut est appliqué contient uniquement les paires préfixe-espace de noms qui appartiennent à l’élément XML défini par la classe. Par exemple, dans le document XML suivant, seule la paire de préfixes « cal » est capturée, mais pas le préfixe « x ». Pour obtenir ces données, ajoutez un membre à XmlNamespaceDeclarationsAttribute la classe qui représente l’élément root
.
<?xml version="1.0"?>
<x:root xmlns:x="http://www.cohowinery.com/x/">
<x:select xmlns:cal="http://www.cohowinery.com/calendar/" path="cal:appointments/@cal:startTime" />
</x:root>
Constructeurs
XmlNamespaceDeclarationsAttribute() |
Initialise une nouvelle instance de la classe XmlNamespaceDeclarationsAttribute. |
Propriétés
TypeId |
Lors de l'implémentation dans une classe dérivée, obtient un identificateur unique pour l'objet Attribute. (Hérité de Attribute) |
Méthodes
Equals(Object) |
Retourne une valeur qui indique si cette instance est égale à un objet spécifié. (Hérité de Attribute) |
GetHashCode() |
Retourne le code de hachage de cette instance. (Hérité de Attribute) |
GetType() |
Obtient le Type de l'instance actuelle. (Hérité de Object) |
IsDefaultAttribute() |
En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut pour la classe dérivée. (Hérité de Attribute) |
Match(Object) |
En cas de substitution dans une classe dérivée, retourne une valeur indiquant si cette instance équivaut à un objet spécifié. (Hérité de Attribute) |
MemberwiseClone() |
Crée une copie superficielle du Object actuel. (Hérité de Object) |
ToString() |
Retourne une chaîne qui représente l'objet actuel. (Hérité de Object) |
Implémentations d’interfaces explicites
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch. (Hérité de Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Récupère les informations de type pour un objet, qui peuvent être utilisées pour obtenir les informations de type d'une interface. (Hérité de Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1). (Hérité de Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Fournit l'accès aux propriétés et aux méthodes exposées par un objet. (Hérité de Attribute) |