XmlNamespaceDeclarationsAttribute Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt an, dass die Zieleigenschaft, der Parameter, der Rückgabewert oder das Klassenmemmemment Präfixe enthält, die namespaces zugeordnet sind, die in einem XML-Dokument verwendet werden.
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
- Vererbung
- Attribute
Hinweise
Das XmlNamespaceDeclarationsAttribute Attribut kann nur einmal in einer Klasse auf ein Feld oder eine Eigenschaft angewendet werden, das ein XmlSerializerNamespaces Objekt zurückgibt.
Auf XmlNamespaceDeclarationsAttribute diese Weise können Sie die Präfixe und die zugehörigen Namespaces speichern, die in einem XML-Dokument verwendet werden. Eine häufige Verwendung des Attributs besteht beispielsweise darin, XPath-Daten zu speichern, wie es durch das World Wide Web Consortium-Dokument mit dem Namen XML Language (XPath) Version 1.0 definiert wird. Kurz gesagt ist ein XPath eine Zeichenfolge, die viele Namespacepräfixe und lokale Namen zusammen mit einer anderen Syntax enthält.
Die XPath-Sprache ermöglicht die Zuordnung eines Präfixes mit einem Pfad und die Verwendung des Präfixes innerhalb des XML-Dokuments. Beispielsweise enthält das folgende XML-Dokument mit dem Namen "select" ein Präfix ("cal"), das einem bestimmten URI (http://www.cohowinery.com/calendar/) zugeordnet ist. Das Element enthält ein Attribut namens "path", das den XPath enthält.
<select xmlns:cal ="http://www.cohowinery.com/calendar/" path="cal:appointments/@startTime" />
Das Schema hierfür kann folgendes sein:
<element name="select">
<complexType>
<simpleContent>
<attribute name="path" />
</simpleContent>
</complexType>
</element>
Ohne das XmlNamespaceDeclarationsAttribute, die Zuordnung zwischen dem Präfix und dem Namespace geht verloren.
Um die Zuordnung zwischen dem Präfix und dem Namespace-URI beizubehalten, fügen Sie ein Element hinzu, das ein XmlSerializerNamespaces-Objekt zurückgibt, und wenden Sie das attribut XmlNamespaceDeclarationsAttribute auf das Element an, wie im folgenden C#- und Visual Basic Code gezeigt:
// 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
Beim Serialisieren enthält das Schema für das generierte XML-Dokument das XSD-Element appinfo(XML Schema Definition). Das Element enthält außerdem ein Metadatenelement namens keepNamespaceDeclarations, das auf den Namen des Elements festgelegt ist, das die Namespacedeklarationen enthält. Das folgende XML-Fragment zeigt das 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>
Bei der Deserialisierung enthält das xmlns Feld ein XmlSerializerNamespaces Objekt, das alle Namespacepräfixdefinitionen enthält.
Bei der Serialisierung kann der Benutzer dem Objekt mithilfe der XmlSerializerNamespaces Methode Präfix-Namespace-Paare Add hinzufügen. Dies wird im folgenden C#- und Visual Basic Code angezeigt:
// 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" />
Beachten Sie außerdem, dass das Element, auf das das Attribut angewendet wird, nur die Präfixnamespace-Paare enthält, die zum von der Klasse definierten XML-Element gehören. Im folgenden XML-Dokument wird beispielsweise nur das Präfixpaar "cal" erfasst, aber nicht das Präfix "x". Um diese Daten abzurufen, fügen Sie ein Element mit der XmlNamespaceDeclarationsAttribute Klasse hinzu, die das root Element darstellt.
<?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>
Konstruktoren
| Name | Beschreibung |
|---|---|
| XmlNamespaceDeclarationsAttribute() |
Initialisiert eine neue Instanz der XmlNamespaceDeclarationsAttribute-Klasse. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| TypeId |
Wenn sie in einer abgeleiteten Klasse implementiert wird, wird ein eindeutiger Bezeichner für diese Attribute. (Geerbt von Attribute) |
Methoden
| Name | Beschreibung |
|---|---|
| Equals(Object) |
Gibt einen Wert zurück, der angibt, ob diese Instanz einem angegebenen Objekt entspricht. (Geerbt von Attribute) |
| GetHashCode() |
Gibt den Hashcode für diesen instance zurück. (Geerbt von Attribute) |
| GetType() |
Ruft die Type der aktuellen Instanz ab. (Geerbt von Object) |
| IsDefaultAttribute() |
Wenn sie in einer abgeleiteten Klasse überschrieben wird, gibt an, ob der Wert dieser Instanz der Standardwert für die abgeleitete Klasse ist. (Geerbt von Attribute) |
| Match(Object) |
Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem angegebenen Objekt entspricht. (Geerbt von Attribute) |
| MemberwiseClone() |
Erstellt eine flache Kopie der aktuellen Object. (Geerbt von Object) |
| ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |
Explizite Schnittstellenimplementierungen
| Name | Beschreibung |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu. (Geerbt von Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Ruft die Typinformationen für ein Objekt ab, mit denen die Typinformationen für eine Schnittstelle abgerufen werden können. (Geerbt von Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1). (Geerbt von Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Bietet Zugriff auf Eigenschaften und Methoden, die von einem Objekt verfügbar gemacht werden. (Geerbt von Attribute) |