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 der Member Präfixe enthält, die Namespaces zugeordnet sind, welche innerhalb eines XML-Dokuments 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, die ein XmlSerializerNamespaces Objekt zurückgibt.
Mit XmlNamespaceDeclarationsAttribute können Sie die Präfixe und die zugeordneten 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 Dokument des World Wide Web Consortium mit dem Namen XML Language (XPath) Version 1.0 definiert ist. Kurz gesagt, ein XPath ist eine Zeichenfolge, die viele Namespacepräfixe und lokale Namen sowie eine andere Syntax enthält.
Die XPath-Sprache ermöglicht die Zuordnung eines Präfixes zu einem Pfad und die Verwendung des Präfixes innerhalb des XML-Dokuments. Das folgende XML-Dokument mit dem Namen "select" enthält beispielsweise ein Präfix ("cal"), das einem bestimmten URI () zugeordnet isthttp://www.cohowinery.com/calendar/
. 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 wie folgt sein:
<element name="select">
<complexType>
<simpleContent>
<attribute name="path" />
</simpleContent>
</complexType>
</element>
Ohne geht XmlNamespaceDeclarationsAttributedie Zuordnung zwischen dem Präfix und dem Namespace 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 XmlNamespaceDeclarationsAttribute Attribut auf den Member 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 (XML Schema Definition) mit dem Namen appinfo
. 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 XmlSerializerNamespacesAdd -Methode Präfix-Namespace-Paare hinzufügen. Dies wird im folgenden C#- und Visual Basic-Code gezeigt:
// 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äfix-Namespace-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, nicht aber das Präfix "x". Um diese Daten abzurufen, fügen Sie der Klasse, die das Element darstellt, ein Member mit dem XmlNamespaceDeclarationsAttributeroot
hinzu.
<?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
XmlNamespaceDeclarationsAttribute() |
Initialisiert eine neue Instanz der XmlNamespaceDeclarationsAttribute-Klasse. |
Eigenschaften
TypeId |
Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribute ab. (Geerbt von Attribute) |
Methoden
Equals(Object) |
Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist. (Geerbt von Attribute) |
GetHashCode() |
Gibt den Hashcode für diese Instanz zurück. (Geerbt von Attribute) |
GetType() |
Ruft den Type der aktuellen Instanz ab. (Geerbt von Object) |
IsDefaultAttribute() |
Gibt beim Überschreiben in einer abgeleiteten Klasse an, ob der Wert der Instanz der Standardwert für die abgeleitete Klasse ist. (Geerbt von Attribute) |
Match(Object) |
Beim Überschreiben in einer abgeleiteten Klasse wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem bestimmten Objekt entspricht. (Geerbt von Attribute) |
MemberwiseClone() |
Erstellt eine flache Kopie des aktuellen Object. (Geerbt von Object) |
ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |
Explizite Schnittstellenimplementierungen
_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 deren Hilfe 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) |
Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit. (Geerbt von Attribute) |