Sdílet prostřednictvím


XmlNamespaceDeclarationsAttribute Třída

Definice

Určuje, že cílová vlastnost, parametr, návratová hodnota nebo člen třídy obsahuje předpony přidružené k oborům názvů, které se používají v dokumentu 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
Dědičnost
XmlNamespaceDeclarationsAttribute
Atributy

Poznámky

Atribut XmlNamespaceDeclarationsAttribute lze použít pouze jednou ve třídě na pole nebo vlastnost, která vrací XmlSerializerNamespaces objekt.

Umožňuje XmlNamespaceDeclarationsAttribute uložit předpony a přidružené obory názvů používané v dokumentu XML. Jedním z běžných použití atributu je například ukládání dat XPath, protože je definován dokument konsorcia World Wide Web Consortium s názvem XML Language (XPath) verze 1.0. Stručně řečeno, XPath je řetězec, který obsahuje mnoho předpon oboru názvů a místních názvů spolu s jinou syntaxí.

Jazyk XPath umožňuje přidružení předpony k cestě a použití předpony v dokumentu XML. Například následující dokument XML s názvem "select" obsahuje předponu ("cal") přidruženou ke konkrétnímu identifikátoru URI (http://www.cohowinery.com/calendar/). Element obsahuje atribut s názvem "path", který obsahuje XPath.

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

Toto schéma může být následující:

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

Bez přípony XmlNamespaceDeclarationsAttributedojde ke ztrátě přidružení mezi předponou a oborem názvů.

Pokud chcete zachovat přidružení mezi předponou a identifikátorem URI oboru názvů, přidejte člena, který vrátí XmlSerializerNamespaces objekt, a použijte XmlNamespaceDeclarationsAttribute atribut na člena, jak je znázorněno v následujícím kódu C# a Visual Basic kódu:

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

Při serializaci obsahuje schéma pro vygenerovaný dokument XML element definice schématu XML (XSD) s názvem appinfo. Element dále obsahuje element metadat s názvem keepNamespaceDeclarations, nastavený na název člena, který obsahuje deklarace oboru názvů. Následující fragment XML ukazuje schéma:

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

Při deserializaci xmlns pole obsahuje XmlSerializerNamespaces objekt, který obsahuje všechny definice předpon oboru názvů.

Při serializaci může uživatel přidat páry předpon-obor názvů k XmlSerializerNamespaces objektu Add pomocí metody. Toto je znázorněno v následujícím kódu C# a 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" />  

Všimněte si také, že člen, na který je atribut použit, obsahuje pouze páry předpon-obor názvů, které patří do elementu XML definovaného třídou. Například v následujícím dokumentu XML se zachytí pouze pár předpon "cal", ale ne předpona "x". Chcete-li získat tato data, přidejte člena se XmlNamespaceDeclarationsAttribute třídou, která představuje root prvek.

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

Inicializuje novou instanci XmlNamespaceDeclarationsAttribute třídy.

Vlastnosti

TypeId

Při implementaci v odvozené třídě získá jedinečný identifikátor pro tento Attribute.

(Zděděno od Attribute)

Metody

Equals(Object)

Vrací hodnotu, která určuje, zda je tato instance rovna zadanému objektu.

(Zděděno od Attribute)
GetHashCode()

Vrátí hodnotu hash pro tuto instanci.

(Zděděno od Attribute)
GetType()

Type Získá aktuální instanci.

(Zděděno od Object)
IsDefaultAttribute()

Při přepsání v odvozené třídě určuje, zda hodnota této instance je výchozí hodnotou odvozené třídy.

(Zděděno od Attribute)
Match(Object)

Při přepsání v odvozené třídě vrátí hodnotu, která označuje, zda se tato instance rovná zadanému objektu.

(Zděděno od Attribute)
MemberwiseClone()

Vytvoří použádnou kopii aktuálního souboru Object.

(Zděděno od Object)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Explicitní implementace rozhraní

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

Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání.

(Zděděno od Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Načte informace o typu objektu, který lze použít k získání informací o typu rozhraní.

(Zděděno od Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1).

(Zděděno od Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Poskytuje přístup k vlastnostem a metodám vystaveným objektem.

(Zděděno od Attribute)

Platí pro