Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Clase XmlNamespaceDeclarationsAttribute

 

Publicado: octubre de 2016

Especifica que la propiedad, el parámetro, el valor devuelto o el miembro de clase de destino contiene prefijos asociados a espacios de nombres que se usan en un documento XML.

Espacio de nombres:   System.Xml.Serialization
Ensamblado:  System.Xml (en System.Xml.dll)

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

[AttributeUsageAttribute(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter | AttributeTargets.ReturnValue, 
	AllowMultiple = false)]
public class XmlNamespaceDeclarationsAttribute : Attribute

NombreDescripción
System_CAPS_pubmethodXmlNamespaceDeclarationsAttribute()

Inicializa una nueva instancia de la clase XmlNamespaceDeclarationsAttribute.

NombreDescripción
System_CAPS_pubpropertyTypeId

Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute.(Heredado de Attribute).

NombreDescripción
System_CAPS_pubmethodEquals(Object)

Esta API admite la infraestructura producto y no está diseñada para usarse directamente desde el código. Devuelve un valor que indica si esta instancia equivale al objeto especificado. (Heredado de Attribute).

System_CAPS_protmethodFinalize()

Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por el recolector de basura. (Heredado de Object).

System_CAPS_pubmethodGetHashCode()

Devuelve el código hash de esta instancia.(Heredado de Attribute).

System_CAPS_pubmethodGetType()

Obtiene el Type de la instancia actual.(Heredado de Object).

System_CAPS_pubmethodIsDefaultAttribute()

Si se reemplaza en una clase derivada, indica si el valor de esta instancia es el valor predeterminado de la clase derivada.(Heredado de Attribute).

System_CAPS_pubmethodMatch(Object)

Cuando se invalida en una clase derivada, devuelve un valor que indica si esta instancia es igual al objeto especificado. (Heredado de Attribute).

System_CAPS_protmethodMemberwiseClone()

Crea una copia superficial del Object actual.(Heredado de Object).

System_CAPS_pubmethodToString()

Devuelve una cadena que representa al objeto actual. (Heredado de Object).

NombreDescripción
System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.(Heredado de Attribute).

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Obtiene la información del tipo de un objeto, que puede utilizarse para obtener la información del tipo de una interfaz. (Heredado de Attribute).

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfoCount(UInt32)

Recupera el número de interfaces de tipo de información que suministra un objeto (0 ó 1)

(Heredado de Attribute).

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Proporciona acceso a las propiedades y los métodos expuestos por un objeto.(Heredado de Attribute).

El XmlNamespaceDeclarationsAttribute atributo sólo se puede aplicar una vez en una clase a un campo o propiedad que devuelve una XmlSerializerNamespaces objeto.

El XmlNamespaceDeclarationsAttribute permite almacenar los prefijos y los espacios de nombres asociados utilizados en un documento XML. Por ejemplo, un uso común del atributo es almacenar datos XPath, tal como se define en el documento del Consorcio WWC (www.w3.org) denominado "XML Language (XPath) Version 1.0". En resumen, una expresión XPath es una cadena que contiene numerosos nombres locales, junto con otra sintaxis y prefijos de espacio de nombres.

El lenguaje XPath permite la asociación de un prefijo con una ruta de acceso y el uso del prefijo en el documento XML. Por ejemplo, el siguiente documento XML titulado "select" contiene un prefijo ("cal") asociado a un URI concreto (http://www.cohowinery.com/calendar/). El elemento contiene un atributo denominado "path" que contiene la expresión XPath.

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

El esquema de esta podría ser:

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

Sin el XmlNamespaceDeclarationsAttribute, se pierde la asociación entre el prefijo y el espacio de nombres.

Para conservar la asociación entre el prefijo y el URI de espacio de nombres, agregue un miembro que devuelve un XmlSerializerNamespaces de objetos y aplicar el XmlNamespaceDeclarationsAttribute atributo al miembro, como se muestra en el siguiente código de C# y 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

Cuando se serializa, el esquema para el documento XML generado contiene el elemento de definición (XSD) del esquema XML denominado appinfo. El elemento contiene además un elemento de metadatos denominado keepNamespaceDeclarations, establezca en el nombre del miembro que contiene las declaraciones de espacio de nombres. El siguiente fragmento XML muestra el esquema:

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

Durante la deserialización, la xmlns campo contiene un XmlSerializerNamespaces objeto que contiene todas las definiciones de prefijos de espacio de nombres.

En la serialización, el usuario puede agregar pares de prefijo y espacio de nombres para el XmlSerializerNamespaces objeto mediante el Add método. Esto se muestra en el siguiente código de C# y 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" />

Tenga en cuenta que el miembro al que se aplica el atributo contiene los pares de prefijo y espacio de nombres que pertenecen al elemento XML definido por la clase. Por ejemplo, en el siguiente documento XML, el par de prefijo "cal" se captura, pero no del prefijo "x". Para obtener esos datos, agregar un miembro con el XmlNamespaceDeclarationsAttribute a la clase que representa el root elemento.

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

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 1.1
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1

Cualquier miembro ( Compartido en Visual Basic) estático público de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Volver al principio
Mostrar: