XmlNamespaceDeclarationsAttribute Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
- 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) |