XmlNamespaceDeclarationsAttribute Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Specifica che la proprietà di destinazione, il parametro, il valore restituito o il membro della classe contiene prefissi associati agli spazi dei nomi utilizzati 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à
- 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 .
XmlNamespaceDeclarationsAttribute consente di archiviare i prefissi e gli spazi dei nomi associati, usati in un documento XML. Ad esempio, un uso 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, un 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 L'oggetto 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>
XmlNamespaceDeclarationsAttributeSenza , l'associazione tra il prefisso e lo spazio dei nomi viene persa.
Per mantenere l'associazione tra il prefisso e l'URI dello spazio dei nomi, aggiungere un membro che restituisce un oggetto XmlSerializerNamespaces 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
Se 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 che contiene 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 caso di deserializzazione, il xmlns campo contiene un XmlSerializerNamespaces oggetto che contiene tutte le definizioni di prefisso dello spazio dei nomi.
Durante la serializzazione, l'utente può aggiungere coppie di prefix-namespace all'oggetto XmlSerializerNamespaces usando il Add metodo . Questo è illustrato 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 inoltre che il membro a cui viene applicato l'attributo contiene solo le coppie prefix-namespace che appartengono all'elemento XML definito dalla classe . Nel documento XML seguente, ad esempio, viene acquisita solo la coppia di prefissi "cal", ma non il prefisso "x". Per ottenere tali dati, aggiungere un membro con XmlNamespaceDeclarationsAttribute alla classe che rappresenta l'elemento 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>
Costruttori
| Nome | Descrizione |
|---|---|
| XmlNamespaceDeclarationsAttribute() |
Inizializza una nuova istanza della classe XmlNamespaceDeclarationsAttribute. |
Proprietà
| Nome | Descrizione |
|---|---|
| TypeId |
Se implementato in una classe derivata, ottiene un identificatore univoco per questo Attribute. (Ereditato da Attribute) |
Metodi
| Nome | Descrizione |
|---|---|
| Equals(Object) |
Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato. (Ereditato da Attribute) |
| GetHashCode() |
Restituisce il codice hash per questa istanza. (Ereditato da Attribute) |
| GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
| IsDefaultAttribute() |
Quando sottoposto a 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 è uguale a un oggetto specificato. (Ereditato da Attribute) |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
Implementazioni dell'interfaccia esplicita
| Nome | Descrizione |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Esegue il mapping di un set di nomi a un set corrispondente di identificatori dispatch. (Ereditato da Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Recupera le informazioni sul tipo per un oggetto, che può essere utilizzato per ottenere le informazioni sul tipo per un'interfaccia. (Ereditato da Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Recupera il numero di 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 alle proprietà e ai metodi esposti da un oggetto . (Ereditato da Attribute) |