XamlXmlWriter Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Usa un TextWriter o XmlWriter clase de compatibilidad para escribir una secuencia de nodo XAML en un formulario serializado de texto o marcado.
public ref class XamlXmlWriter : System::Xaml::XamlWriter
public class XamlXmlWriter : System.Xaml.XamlWriter
type XamlXmlWriter = class
inherit XamlWriter
Public Class XamlXmlWriter
Inherits XamlWriter
- Herencia
Comentarios
Esta clase se usa normalmente en escenarios de serialización.
Cómo usar XamlXmlWriter
La API de XamlWriter tiene varios métodos que escriben distintos tipos de nodos XAML. Colectivamente, estos se conocen en la documentación como los métodos Write
de un XamlWriter.
XamlXmlWriter usa varias clases de estado internas para determinar qué hacer cuando se llama a una de sus implementaciones de Write
. Una llamada a Write
usa los estados para determinar si se puede escribir el elemento, el atributo o el valor solicitados, o si se produce una excepción. Por ejemplo, si llama a WriteEndObject y el estado del XamlXmlWriter posición del nodo actual está en un valor o dentro de un miembro, se produce una excepción. Normalmente, los autores de llamadas de la API de XamlXmlWriter deben tener en cuenta el tipo del nodo XAML actual que procede del lector XAML y del flujo de nodos XAML. En función de este conocimiento, los autores de llamadas deben evitar llamar a Write
API que no son relevantes para el tipo de nodo actual.
Espacios de nombres XAML y XamlXmlWriter
El comportamiento de escritura de espacios de nombres XAML de XamlXmlWriter es complejo y no se limita a llamadas explícitas a WriteNamespace. En su lugar, otras llamadas Write
, como WriteStartObject, pueden requerir que la declaración del espacio de nombres se escriba en puntos concretos de la estructura del nodo. El escritor XAML genera un prefijo por su propia lógica o usa información del servicio INamespacePrefixLookup para determinar un prefijo preferido. Además, las llamadas explícitas WriteNamespace podrían aplazar o no devolver nada si la declaración del espacio de nombres XAML ya es aplicable y declarada en otro lugar.
Excepciones de método de escritura
Las excepciones producidas por los métodos de XamlXmlWriterWrite
suelen ser InvalidOperationException o XamlXmlWriterException.
Un InvalidOperationException suele indicar que un lector XAML pasó una estructura de nodo no válida al flujo de nodos XAML. En este caso, la estructura del nodo no es válida por motivos que no están relacionados con la validación de un esquema XAML o un contexto de esquema XAML. En su lugar, el flujo de nodo no es válido en su forma básica. Por ejemplo, si una implementación de lector XAML errónea generó un flujo de nodo XAML que contenía dos nodos de StartObject
consecutivos, el intento de llamar al segundo WriteStartObject produciría un InvalidOperationException. Todos los escritores XAML considerarían que una operación de este tipo no es válida. Otro ejemplo de un InvalidOperationException es cuando la información del espacio de nombres XAML no está disponible a través del contexto de esquema XAML que se aplica a la posición actual del flujo de nodo.
Un XamlXmlWriterException indica una excepción en la que esta implementación concreta del escritor XAML elige iniciar una excepción en función de su funcionalidad prevista. Un XamlXmlWriterException puede indicar casos específicos en los que un XamlXmlWriter infringe su propio estado o configuración. Por ejemplo, un XamlXmlWriterException podría resultar de intentos de escribir información de espacio de nombres XAML en una posición que el XamlXmlWriter y su formato de serialización no admiten, ni escribir miembros duplicados cuando la instancia XamlXmlWriterSettings prohibirla.
Constructores
XamlXmlWriter(Stream, XamlSchemaContext) |
Inicializa una nueva instancia de la clase XamlXmlWriter desde una secuencia. |
XamlXmlWriter(Stream, XamlSchemaContext, XamlXmlWriterSettings) |
Inicializa una nueva instancia de la clase XamlXmlWriter desde una secuencia mediante un objeto de configuración de escritor. |
XamlXmlWriter(TextWriter, XamlSchemaContext) |
Inicializa una nueva instancia de la clase XamlXmlWriter a partir de una TextWriter base. |
XamlXmlWriter(TextWriter, XamlSchemaContext, XamlXmlWriterSettings) |
Inicializa una nueva instancia de la clase XamlXmlWriter a partir de un TextWriter base mediante un objeto de configuración. |
XamlXmlWriter(XmlWriter, XamlSchemaContext) |
Inicializa una nueva instancia de la clase XamlXmlWriter a partir de una XmlWriter base. |
XamlXmlWriter(XmlWriter, XamlSchemaContext, XamlXmlWriterSettings) |
Inicializa una nueva instancia de la clase XamlXmlWriter a partir de un XmlWriter base mediante un objeto de configuración. |
Propiedades
IsDisposed |
Obtiene si se ha llamado a Dispose(Boolean). (Heredado de XamlWriter) |
SchemaContext |
Obtiene el contexto de esquema XAML que usa este XamlXmlWriter para su procesamiento. |
Settings |
Obtiene la configuración del escritor que usa este XamlXmlWriter para el procesamiento XAML. |
Métodos
Close() |
Cierra el objeto de escritura XAML. (Heredado de XamlWriter) |
Dispose(Boolean) |
Libera los recursos no administrados usados por XamlXmlWriter y, opcionalmente, libera los recursos administrados. |
Equals(Object) |
Determina si el objeto especificado es igual al objeto actual. (Heredado de Object) |
Flush() |
Llama al método |
GetHashCode() |
Actúa como función hash predeterminada. (Heredado de Object) |
GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
MemberwiseClone() |
Crea una copia superficial del Objectactual. (Heredado de Object) |
ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |
WriteEndMember() |
Escribe un nodo de miembro final XAML en el XmlWriter subyacente o TextWriter. Produce una excepción si la posición actual de la secuencia de nodos XAML no está dentro de un miembro o si el estado del escritor interno no admite la escritura en un miembro final. |
WriteEndObject() |
Escribe un nodo de objeto de extremo XAML en el XmlWriter subyacente o TextWriter. Produce una excepción si la posición actual de la secuencia de nodos XAML que se está procesando no es compatible con la escritura de un objeto final. |
WriteGetObject() |
Escribe un objeto para los casos en los que el objeto especificado es un valor predeterminado o implícito de la propiedad que se está escribiendo, en lugar de especificarse como un valor de objeto en el conjunto de nodos XAML de entrada. |
WriteNamespace(NamespaceDeclaration) |
Escribe información de espacio de nombres en el XmlWriter subyacente o TextWriter. Puede producir una excepción para determinados estados; Sin embargo, en su lugar, puede aplazar la escritura de la información del espacio de nombres hasta que el escritor y el flujo de nodo XAML que se está procesando alcanzan una posición en la que se puede insertar una declaración de espacio de nombres XAML. |
WriteNode(XamlReader) |
Realiza el cambio en función del tipo de nodo del lector XAML (NodeType) y llama al método |
WriteStartMember(XamlMember) |
Escribe un nodo miembro de inicio XAML en el XmlWriter subyacente o TextWriter. Produce una excepción si la posición actual del flujo de nodo XAML está dentro de otro miembro o si no está en un ámbito o estado de escritor donde se puede escribir un miembro inicial. |
WriteStartObject(XamlType) |
Escribe un nodo de objeto de inicio XAML en el XmlWriter subyacente o TextWriter. Produce una excepción si la posición actual del flujo de nodo XAML no está en un ámbito en el que se puede escribir un objeto start, o si el escritor no está en un estado que pueda escribir un objeto start. |
WriteValue(Object) |
Escribe un nodo de valor XAML en el XmlWriter subyacente o TextWriter. Produce una excepción si la posición actual de la secuencia de nodos XAML no es válida para escribir un valor o el escritor está en un estado en el que no se puede escribir un valor. |
Implementaciones de interfaz explícitas
IDisposable.Dispose() |
Consulte Dispose(). (Heredado de XamlWriter) |