XamlXmlWriter 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
使用 TextWriter 或 XmlWriter 支持类将 XAML 节点流写入文本或标记序列化表单。
public ref class XamlXmlWriter : System::Xaml::XamlWriter
public class XamlXmlWriter : System.Xaml.XamlWriter
type XamlXmlWriter = class
inherit XamlWriter
Public Class XamlXmlWriter
Inherits XamlWriter
- 继承
注解
此类通常用于序列化方案。
如何使用 XamlXmlWriter
XamlWriter API 有多种方法可以编写不同类型的 XAML 节点。 它们统称为文档中 XamlWriter的 Write
方法。
XamlXmlWriter 使用多个内部状态类来确定调用其 Write
实现之一时应执行的操作。
Write
调用使用状态来确定请求的元素、属性或值是可以写入还是引发异常。 例如,如果调用 WriteEndObject 并且当前节点位置 XamlXmlWriter 的状态位于值或成员中,则会引发异常。 通常,XamlXmlWriter API 的调用方应注意来自 XAML 读取器和 XAML 节点流的当前 XAML 节点的类型。 根据这一知识,调用方应避免调用与当前节点类型无关 Write
API。
XAML 命名空间和 XamlXmlWriter
XamlXmlWriter 的 XAML 命名空间写入行为很复杂,不限于对 WriteNamespace的显式调用。 相反,其他 Write
调用(如 WriteStartObject)可能需要在节点结构中的特定点写入命名空间声明。 XAML 编写器通过自己的逻辑生成前缀,或使用来自 INamespacePrefixLookup 服务的信息来确定首选前缀。 此外,显式 WriteNamespace 调用可能会延迟,或者如果 XAML 命名空间声明已适用且在其他位置声明,则不返回任何内容。
写入方法异常
XamlXmlWriter
Write
方法引发的异常通常 InvalidOperationException 或 XamlXmlWriterException。
InvalidOperationException 通常指示 XAML 读取器将无效节点结构传递到 XAML 节点流。 在这种情况下,节点结构无效,原因与验证 XAML 架构或 XAML 架构上下文无关。 相反,节点流的基本形式无效。 例如,如果错误的 XAML 读取器实现生成了包含两个连续 StartObject
节点的 XAML 节点流,则尝试调用第二个 WriteStartObject 将引发 InvalidOperationException。 所有 XAML 编写器都会认为此类操作无效。
InvalidOperationException 的另一个示例是,当 XAML 命名空间信息通过应用于当前节点流位置的 XAML 架构上下文不可用时。
XamlXmlWriterException 指示此特定 XAML 编写器实现选择根据其预期功能引发异常的异常。 XamlXmlWriterException 可以指示 XamlXmlWriter 违反其自己的状态或设置的特定情况。 例如,XamlXmlWriterException 可能会导致尝试将 XAML 命名空间信息写入 XamlXmlWriter 及其序列化格式不支持的位置,或者在实例的 XamlXmlWriterSettings 禁止时写入重复成员。
构造函数
XamlXmlWriter(Stream, XamlSchemaContext) |
从流初始化 XamlXmlWriter 类的新实例。 |
XamlXmlWriter(Stream, XamlSchemaContext, XamlXmlWriterSettings) |
使用编写器设置对象从流初始化 XamlXmlWriter 类的新实例。 |
XamlXmlWriter(TextWriter, XamlSchemaContext) |
从 TextWriter 基础初始化 XamlXmlWriter 类的新实例。 |
XamlXmlWriter(TextWriter, XamlSchemaContext, XamlXmlWriterSettings) |
使用设置对象从 TextWriter 基础初始化 XamlXmlWriter 类的新实例。 |
XamlXmlWriter(XmlWriter, XamlSchemaContext) |
从 XmlWriter 基础初始化 XamlXmlWriter 类的新实例。 |
XamlXmlWriter(XmlWriter, XamlSchemaContext, XamlXmlWriterSettings) |
使用设置对象从 XmlWriter 基础初始化 XamlXmlWriter 类的新实例。 |
属性
IsDisposed |
获取是否已调用 Dispose(Boolean)。 (继承自 XamlWriter) |
SchemaContext |
获取此 XamlXmlWriter 用于处理的 XAML 架构上下文。 |
Settings |
获取此 XamlXmlWriter 用于 XAML 处理的编写器设置。 |
方法
Close() |
关闭 XAML 编写器对象。 (继承自 XamlWriter) |
Dispose(Boolean) |
释放 XamlXmlWriter 使用的非托管资源,并选择性地释放托管资源。 |
Equals(Object) |
确定指定的对象是否等于当前对象。 (继承自 Object) |
Flush() |
调用基础 XmlWriter 或 TextWriter的 |
GetHashCode() |
用作默认哈希函数。 (继承自 Object) |
GetType() |
获取当前实例的 Type。 (继承自 Object) |
MemberwiseClone() |
创建当前 Object的浅表副本。 (继承自 Object) |
ToString() |
返回一个表示当前对象的字符串。 (继承自 Object) |
WriteEndMember() |
将 XAML 结束成员节点写入基础 XmlWriter 或 TextWriter。 如果 XAML 节点流的当前位置不在成员中,或者内部编写器状态不支持写入结束成员,则引发异常。 |
WriteEndObject() |
将 XAML 结束对象节点写入基础 XmlWriter 或 TextWriter。 如果正在处理的 XAML 节点流的当前位置与写入结束对象不兼容,则引发异常。 |
WriteGetObject() |
为指定对象是正在写入的属性的默认值或隐式值,而不是在输入 XAML 节点集中指定为对象值的情况下写入对象。 |
WriteNamespace(NamespaceDeclaration) |
将命名空间信息写入基础 XmlWriter 或 TextWriter。 可能会引发某些状态的异常;但是,可以推迟写入命名空间信息,直到正在处理的编写器和 XAML 节点流到达可以插入 XAML 命名空间声明的位置。 |
WriteNode(XamlReader) |
根据 XAML 读取器(NodeType)中的节点类型执行切换,并调用编写器实现的相关 |
WriteStartMember(XamlMember) |
将 XAML 启动成员节点写入基础 XmlWriter 或 TextWriter。 如果 XAML 节点流的当前位置位于另一个成员中,或者它不在可以写入起始成员的范围或编写器状态,则引发异常。 |
WriteStartObject(XamlType) |
将 XAML 启动对象节点写入基础 XmlWriter 或 TextWriter。 如果 XAML 节点流的当前位置不在可以写入开始对象的作用域中,或者编写器不处于可以写入开始对象的状态,则引发异常。 |
WriteValue(Object) |
将 XAML 值节点写入基础 XmlWriter 或 TextWriter。 如果 XAML 节点流的当前位置对写入值无效,或者编写器处于无法写入值的状态,则引发异常。 |
显式接口实现
IDisposable.Dispose() |
请参阅 Dispose()。 (继承自 XamlWriter) |