Udostępnij za pośrednictwem


XmlNamespaceDeclarationsAttribute Klasa

Definicja

Określa, że właściwość docelowa, parametr, wartość zwracana lub składowa klasy zawiera prefiksy skojarzone z przestrzeniami nazw, które są używane w dokumencie 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
Dziedziczenie
XmlNamespaceDeclarationsAttribute
Atrybuty

Uwagi

Atrybut XmlNamespaceDeclarationsAttribute można zastosować tylko raz w klasie do pola lub właściwości zwracającej XmlSerializerNamespaces obiekt.

Element XmlNamespaceDeclarationsAttribute umożliwia przechowywanie prefiksów i skojarzonych przestrzeni nazw używanych w dokumencie XML. Na przykład jednym z typowych użycia atrybutu jest przechowywanie danych XPath, ponieważ jest ono definiowane przez dokument World Wide Web Consortium o nazwie XML Language (XPath) w wersji 1.0. Krótko mówiąc, XPath jest ciągiem, który zawiera wiele prefiksów przestrzeni nazw i nazw lokalnych, wraz z inną składnią.

Język XPath umożliwia skojarzenie prefiksu ze ścieżką i używanie prefiksu w dokumencie XML. Na przykład następujący dokument XML o nazwie "select" zawiera prefiks ("cal") skojarzony z określonym identyfikatorem URI (http://www.cohowinery.com/calendar/). Element zawiera atrybut o nazwie "path", który zawiera ścieżkę XPath.

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

Schematem tego może być:

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

XmlNamespaceDeclarationsAttributeBez elementu skojarzenie między prefiksem a przestrzenią nazw zostanie utracone.

Aby zachować skojarzenie między prefiksem a identyfikatorem URI przestrzeni nazw, dodaj element członkowski, który zwraca XmlSerializerNamespaces obiekt i zastosuj XmlNamespaceDeclarationsAttribute atrybut do elementu członkowskiego, jak pokazano w poniższym kodzie C# i Visual Basic:

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

Po serializacji schemat wygenerowanego dokumentu XML zawiera element definicji schematu XML (XSD) o nazwie appinfo. Element zawiera dalej element metadanych o nazwie keepNamespaceDeclarations, ustawiony na nazwę elementu członkowskiego, który zawiera deklaracje przestrzeni nazw. Poniższy fragment XML przedstawia schemat:

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

Podczas deserializacji xmlns pole zawiera XmlSerializerNamespaces obiekt zawierający wszystkie definicje prefiksów przestrzeni nazw.

W przypadku serializacji użytkownik może dodać pary prefiks-namespace do XmlSerializerNamespaces obiektu przy użyciu Add metody . Jest to pokazane w następującym kodzie C# i Visual Basic:

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

Należy również zauważyć, że składowa, do której zastosowano atrybut, zawiera tylko pary przestrzeni nazw prefiksu, które należą do elementu XML zdefiniowanego przez klasę. Na przykład w poniższym dokumencie XML jest przechwytywana tylko para prefiksu "cal", ale nie prefiks "x". Aby uzyskać te dane, dodaj element członkowski z XmlNamespaceDeclarationsAttribute elementem do klasy reprezentującej root element .

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

Konstruktory

XmlNamespaceDeclarationsAttribute()

Inicjuje nowe wystąpienie klasy XmlNamespaceDeclarationsAttribute.

Właściwości

TypeId

Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego Attributeelementu .

(Odziedziczone po Attribute)

Metody

Equals(Object)

Zwraca wartość wskazującą, czy to wystąpienie jest równe podanemu obiektowi.

(Odziedziczone po Attribute)
GetHashCode()

Zwraca wartość skrótu dla tego wystąpienia.

(Odziedziczone po Attribute)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
IsDefaultAttribute()

W przypadku zastąpienia w klasie pochodnej wskazuje, czy wartość tego wystąpienia jest wartością domyślną klasy pochodnej.

(Odziedziczone po Attribute)
Match(Object)

Po przesłonięciu w klasie pochodnej zwraca wartość wskazującą, czy to wystąpienie jest równe określonemu obiektowi.

(Odziedziczone po Attribute)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Jawne implementacje interfejsu

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

Zestaw nazw jest mapowany na odpowiedni zestaw identyfikatorów wysyłania.

(Odziedziczone po Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Pobiera informacje o typie dla obiektu, który może służyć do pobierania informacji o typie dla interfejsu.

(Odziedziczone po Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Pobiera informację o liczbie typów interfejsów, jakie zawiera obiekt (0 lub 1).

(Odziedziczone po Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Umożliwia dostęp do właściwości i metod udostępnianych przez obiekt.

(Odziedziczone po Attribute)

Dotyczy