Condividi tramite


XmlNamespaceDeclarationsAttribute Classe

Definizione

Specifica che la proprietà, il parametro, il valore restituito o il membro della classe di destinazione contiene prefissi associati a spazi dei nomi usati all'interno di un documento 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
Ereditarietà
XmlNamespaceDeclarationsAttribute
Attributi

Commenti

L'attributo XmlNamespaceDeclarationsAttribute può essere applicato una sola volta in una classe a un campo o a una proprietà che restituisce un XmlSerializerNamespaces oggetto.

Consente XmlNamespaceDeclarationsAttribute di archiviare i prefissi e gli spazi dei nomi associati, usati in un documento XML. Ad esempio, un utilizzo comune dell'attributo consiste nell'archiviare i dati XPath, come definito dal documento World Wide Web Consortium denominato XML Language (XPath) versione 1.0. In breve, una XPath è una stringa che contiene molti prefissi dello spazio dei nomi e nomi locali, insieme ad altre sintassi.

Il linguaggio XPath consente l'associazione di un prefisso con un percorso e l'uso del prefisso all'interno del documento XML. Ad esempio, il documento XML seguente denominato "select" contiene un prefisso ("cal") associato a un URI specifico (http://www.cohowinery.com/calendar/). L'elemento contiene un attributo denominato "path" che contiene XPath.

<select xmlns:cal ="http://www.cohowinery.com/calendar/" path="cal:appointments/@startTime" />  

Lo schema per questo potrebbe essere:

<element name="select">  
   <complexType>  
      <simpleContent>  
         <attribute name="path" />  
      </simpleContent>  
   </complexType>  
</element>  

Senza , l'associazione XmlNamespaceDeclarationsAttributetra il prefisso e lo spazio dei nomi viene perso.

Per mantenere l'associazione tra il prefisso e l'URI dello spazio dei nomi, aggiungere un membro che restituisce un XmlSerializerNamespaces oggetto e applicare l'attributo XmlNamespaceDeclarationsAttribute al membro, come illustrato nel codice C# e Visual Basic seguente:

// 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  

Quando viene serializzato, lo schema per il documento XML generato contiene l'elemento XSD (XML Schema Definition) denominato appinfo. L'elemento contiene inoltre un elemento di metadati denominato keepNamespaceDeclarations, impostato sul nome del membro contenente le dichiarazioni dello spazio dei nomi. Il frammento XML seguente mostra lo schema:

<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>  

In fase di deserializzazione, il xmlns campo contiene un XmlSerializerNamespaces oggetto contenente tutte le definizioni di prefisso dello spazio dei nomi.

Durante la serializzazione, l'utente può aggiungere coppie dello spazio dei nomi prefisso all'oggetto XmlSerializerNamespaces usando il Add metodo . Questa operazione è illustrata nel codice C# e Visual Basic seguente:

// 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" />  

Si noti anche che il membro a cui viene applicato l'attributo contiene solo le coppie dello spazio dei nomi prefisso che appartengono all'elemento XML definito dalla classe . Nel documento XML seguente, ad esempio, viene acquisita solo la coppia di prefisso "cal", ma non il prefisso "x". Per ottenere tali dati, aggiungere un membro con la classe che rappresenta l'elemento XmlNamespaceDeclarationsAttributeroot .

<?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>  

Costruttori

XmlNamespaceDeclarationsAttribute()

Inizializza una nuova istanza della classe XmlNamespaceDeclarationsAttribute.

Proprietà

TypeId

Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute.

(Ereditato da Attribute)

Metodi

Equals(Object)

Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato.

(Ereditato da Attribute)
GetHashCode()

Restituisce il codice hash per l'istanza.

(Ereditato da Attribute)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
IsDefaultAttribute()

In caso di override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata.

(Ereditato da Attribute)
Match(Object)

Quando è sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza equivale a un oggetto specificato.

(Ereditato da Attribute)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch.

(Ereditato da Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera le informazioni sul tipo relative a un oggetto, che possono essere usate per ottenere informazioni sul tipo relative a un'interfaccia.

(Ereditato da Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 1).

(Ereditato da Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornisce l'accesso a proprietà e metodi esposti da un oggetto.

(Ereditato da Attribute)

Si applica a