XmlNamespaceDeclarationsAttribute Класс

Определение

Указывает, что целевое свойство, параметр, возвращаемое значение или член класса содержит префиксы, связанные с пространствами имен, которые используются в 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
Наследование
XmlNamespaceDeclarationsAttribute
Атрибуты

Комментарии

Атрибут XmlNamespaceDeclarationsAttribute может применяться только один раз в классе к полю или свойству, возвращающим XmlSerializerNamespaces объект.

Позволяет XmlNamespaceDeclarationsAttribute хранить префиксы и связанные пространства имен, используемые в XML-документе. Например, одним из распространенных способов использования атрибута является хранение данных XPath, так как оно определяется документом консорциума World Wide Web Consortium с именем XML Language (XPath) версии 1.0. Вкратце, XPath — это строка, содержащая множество префиксов пространства имен и локальных имен, а также некоторые другие синтаксисы.

Язык XPath позволяет ассоциации префикса с путем и использования префикса в XML-документе. Например, следующий XML-документ с именем select содержит префикс ("cal"), связанный с определенным универсальным кодом ресурса (http://www.cohowinery.com/calendar/URI). Элемент содержит атрибут с именем path, содержащий XPath.

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

Для этого может быть следующая схема:

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

XmlNamespaceDeclarationsAttributeБез связи между префиксом и пространством имен теряется.

Чтобы сохранить связь между префиксом и URI пространства имен, добавьте элемент, возвращающий объект XmlSerializerNamespaces и применив атрибут XmlNamespaceDeclarationsAttribute к элементу, как показано в следующем коде C# и 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

При сериализации схема созданного XML-документа содержит элемент appinfoопределения схемы XML (XSD). Кроме того, элемент содержит элемент метаданных с именем keepNamespaceDeclarations, задайте имя элемента, содержащего объявления пространства имен. В следующем фрагменте XML показана схема:

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

При десериализации xmlns поле содержит XmlSerializerNamespaces объект, содержащий все определения префикса пространства имен.

При сериализации пользователь может добавлять пары пространства имен префикса в XmlSerializerNamespaces объект с помощью Add метода. Это показано в следующем коде C# и 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" />

Кроме того, обратите внимание, что элемент, к которому применяется атрибут, содержит только пары пространства имен префикса, принадлежащие элементу XML, определенному классом. Например, в следующем XML-документе фиксируется только пара префикса cal, но не префикс x. Чтобы получить эти данные, добавьте элемент с XmlNamespaceDeclarationsAttribute классом, который представляет root элемент.

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

Конструкторы

Имя Описание
XmlNamespaceDeclarationsAttribute()

Инициализирует новый экземпляр класса XmlNamespaceDeclarationsAttribute.

Свойства

Имя Описание
TypeId

При реализации в производном классе получает уникальный идентификатор для этого Attribute.

(Унаследовано от Attribute)

Методы

Имя Описание
Equals(Object)

Возвращает значение, указывающее, равен ли этот экземпляр указанному объекту.

(Унаследовано от Attribute)
GetHashCode()

Возвращает хэш-код для этого экземпляра.

(Унаследовано от Attribute)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
IsDefaultAttribute()

При переопределении в производном классе указывает, является ли значение этого экземпляра значением по умолчанию для производного класса.

(Унаследовано от Attribute)
Match(Object)

При переопределении в производном классе возвращает значение, указывающее, равен ли этот экземпляр указанному объекту.

(Унаследовано от Attribute)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Явные реализации интерфейса

Имя Описание
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации.

(Унаследовано от Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Извлекает сведения о типе объекта, который можно использовать для получения сведений о типе для интерфейса.

(Унаследовано от Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1).

(Унаследовано от Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Предоставляет доступ к свойствам и методам, предоставляемым объектом.

(Унаследовано от Attribute)

Применяется к