Freigeben über


XmlNamespaceDeclarationsAttribute-Klasse

Gibt an, dass Zieleigenschaft, Zielparameter, Zielrückgabewert oder Zielklassenmember Präfixe enthalten, die den innerhalb eines XML-Dokuments verwendeten Namespaces zugeordnet werden.

Namespace: System.Xml.Serialization
Assembly: System.Xml (in system.xml.dll)

Syntax

'Declaration
<AttributeUsageAttribute(AttributeTargets.Property Or AttributeTargets.Field Or AttributeTargets.Parameter Or AttributeTargets.ReturnValue, AllowMultiple:=False)> _
Public Class XmlNamespaceDeclarationsAttribute
    Inherits Attribute
'Usage
Dim instance As XmlNamespaceDeclarationsAttribute
[AttributeUsageAttribute(AttributeTargets.Property|AttributeTargets.Field|AttributeTargets.Parameter|AttributeTargets.ReturnValue, AllowMultiple=false)] 
public class XmlNamespaceDeclarationsAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Property|AttributeTargets::Field|AttributeTargets::Parameter|AttributeTargets::ReturnValue, AllowMultiple=false)] 
public ref class XmlNamespaceDeclarationsAttribute : public Attribute
/** @attribute AttributeUsageAttribute(AttributeTargets.Property|AttributeTargets.Field|AttributeTargets.Parameter|AttributeTargets.ReturnValue, AllowMultiple=false) */ 
public class XmlNamespaceDeclarationsAttribute extends Attribute
AttributeUsageAttribute(AttributeTargets.Property|AttributeTargets.Field|AttributeTargets.Parameter|AttributeTargets.ReturnValue, AllowMultiple=false) 
public class XmlNamespaceDeclarationsAttribute extends Attribute

Hinweise

Das XmlNamespaceDeclarationsAttribute-Attribut kann innerhalb einer Klasse nur einmal einem Feld oder einer Eigenschaft zugewiesen werden, das oder die ein XmlSerializerNamespaces-Objekt zurückgibt.

XmlNamespaceDeclarationsAttribute ermöglicht das Speichern der Präfixe und der zugeordneten, in einem XML-Dokument verwendeten Namespaces. Das Attribut wird beispielsweise zum Speichern von XPath-Daten verwendet, wie in dem Dokument "XML Language (Xpath) Version 1.0" des World Wide Web Consortium (www.w3.org) definiert. XPath ist eine Zeichenfolge, die viele Namespace-Präfixe und lokale Namen sowie weitere Syntax enthält.

Mit der XPath-Sprache können Präfixe mit einem Pfad verbunden werden. Außerdem kann ein Präfix innerhalb eines XML-Dokuments verwendet werden. Das folgende XML-Dokument "select" enthält ein Präfix ("cal"), das mit einem spezifischen URI verknüpft ist (http://www.cohowinery.com/calendar/). Das Element enthält das Attribut "path", das wiederum XPath enthält.

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

Im Folgenden finden Sie ein Beispielschema:

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

Ohne XmlNamespaceDeclarationsAttribute wird die Verbindung zwischen Präfix und Namespace verworfen.

Um die Verbindung zwischen Präfix und Namespace-URI beizubehalten, fügen Sie ein Member hinzu, das ein XmlSerializerNamespaces-Objekt zurückgibt und weisen Sie dem Member das XmlNamespaceDeclarationsAttribute-Attribut zu, wie im folgenden C#- und Visual Basic-Code dargestellt:

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

Bei der Serialisierung enthält das Schema für das generierte XML-Dokument das XML-Schemadefinitionselement (XSD) appinfo. Außerdem enthält das Element das Metadatenelement keepNamespaceDeclarations, das auf den Namen des Members festgelegt wurde, der 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 mit allen Präfixdefinitionen für den Namespace.

Bei der Serialisierung kann der Benutzer zum XmlSerializerNamespaces-Objekt mithilfe der Add-Methode Präfix-Namespacepaare hinzufügen. Dies wird im folgenden C#- und Visual Basic-Code dargestellt.

 // 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 Member, dem das Attribut zugewiesen wurde, nur die Präfix-Namespacepaare enthält, die zu dem von der Klasse definierten XML-Element gehören. Im folgenden XML-Dokument wird nur das Präfixpaar "cal" gespeichert, nicht aber das "x"-Präfix. Fügen Sie der Klasse, die das root-Element darstellt, einen Member mit dem XmlNamespaceDeclarationsAttribute hinzu, um diese Daten abzurufen.

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

Vererbungshierarchie

System.Object
   System.Attribute
    System.Xml.Serialization.XmlNamespaceDeclarationsAttribute

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

XmlNamespaceDeclarationsAttribute-Member
System.Xml.Serialization-Namespace