XmlWriterSettings.ConformanceLevel 属性

定义

获取或设置的 XML 写入器检查 XML 输出的一致性级别。

public:
 property System::Xml::ConformanceLevel ConformanceLevel { System::Xml::ConformanceLevel get(); void set(System::Xml::ConformanceLevel value); };
public System.Xml.ConformanceLevel ConformanceLevel { get; set; }
member this.ConformanceLevel : System.Xml.ConformanceLevel with get, set
Public Property ConformanceLevel As ConformanceLevel

属性值

指定一致性级别(文档、片段或自动检测)的枚举值之一。 默认值为 Document

示例

以下示例将 XML 片段写入内存流。

XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
settings.ConformanceLevel = ConformanceLevel.Fragment;
settings.CloseOutput = false;

// Create the XmlWriter object and write some content.
MemoryStream strm = new MemoryStream();
XmlWriter writer = XmlWriter.Create(strm, settings);
writer.WriteElementString("orderID", "1-456-ab");
writer.WriteElementString("orderID", "2-36-00a");
writer.Flush();
writer.Close();

// Do additional processing on the stream.
Dim settings As XmlWriterSettings = New XmlWriterSettings()
settings.OmitXmlDeclaration = true
settings.ConformanceLevel = ConformanceLevel.Fragment
settings.CloseOutput = false

' Create the XmlWriter object and write some content.
Dim strm as MemoryStream = new MemoryStream()
Dim writer As XmlWriter = XmlWriter.Create(strm, settings)
writer.WriteElementString("orderID", "1-456-ab")
writer.WriteElementString("orderID", "2-36-00a")
writer.Flush()
writer.Close()

' Do additional processing on the stream.

注解

属性 XmlWriterSettings.ConformanceLevel 将 XML 编写器配置为检查并保证所写入的流符合特定的规则集。 可以检查 XML 数据,以查看它是否符合格式正确的 XML 1.0 文档或文档片段的规则。 下表描述了这三种设置。 默认值为文档级一致性。

设置 说明
Document 确保 XML 输出符合 格式正确的 XML 1.0 文档的规则 ,并且可由任何符合的处理器进行处理。

文档一致性检查包括大部分片段级检查,并确保以下内容:

- 顶级项没有 XML 声明、DTD、元素、注释、空白或处理指令以外的任何节点。
- XML 数据有一个且只有一个顶级元素节点。

XML 编写器不分析已写入的 DTD 信息。 用户负责确保 DTD 格式良好。
Fragment 确保 XML 输出符合 格式正确的 XML 1.0 文档片段的规则

此设置接受顶级具有多个根元素或文本节点的 XML 数据。 此检查级别确保任何处理器可以将正在读取的流作为 XML 1.0 外部分析的实体使用。

文档片段中不允许 DTD 信息。
Auto 指定 XML 编写器应根据传入数据确定一致性检查的级别。 当你不知道生成的 XML 是格式正确的 XML 文档还是片段时,此设置非常有用。

在下列情况下应用文档一致性检查:

- 如果 WriteStartDocument 调用 方法。
- 如果写入 DTD 信息。

如果 XML 数据包含以下项之一,则会应用片段一致性检查:

- 根级别的 Text、CDATA 或 EntityReference 节点。
- 根级别的多个元素。
- 根级别没有元素。

如果存在冲突,例如在根级别尝试写入文本节点和 DTD 时,将引发 XmlException

如果要包装另一个 XmlWriter 对象,外部对象不会执行任何其他符合性检查;这留给基础对象。

如果 XML 编写器检测到任何违反指定一致性级别的信息,则会引发异常。 在某些情况下,XML 编写器会自动更正一致性错误。 例如,编写器关闭未封闭的属性而不引发异常。 下表显示了如何在每个设置中处理各种符合性冲突。

条件 Document Fragment Auto
找到 DTD 信息。 与此设置不冲突。 但是,XML 编写器不会检查 DTD;用户必须确保 DTD 格式良好。 XmlException 引发 。 应用文档符合性检查。
调用 WriteStartDocument 不被视为此设置的冲突。 XmlException 引发 。 应用文档符合性检查。
多次调用了 WriteStartDocument XmlException 引发 。 XmlException 引发 。 XmlException 引发 。
文本值显示在顶级 (不低于元素或属性节点) 。 XmlException 引发 。 不被视为违规。 应用片断一致性检查。
顶级显示多个元素或没有元素。 XmlException 引发 。 不被视为违规。 应用片断一致性检查。
顶级项为空格。 不被视为违规。 不被视为违规。 不被视为违规。
WriteEndAttribute 不调用 以结束属性节点。 由 XML 编写器修复。 由 XML 编写器修复。 由 XML 编写器修复。
XML 编写器处于嵌套不正确的状态 (例如, WriteStartElement 调用后跟 WriteEndAttribute) 。 XmlException 引发 。 XmlException 引发 。 XmlException 引发 。
顶级项是一个属性。 XmlException 引发 。 XmlException 引发 。 XmlException 引发 。
发现多个连续的文本节点。 不被视为冲突,但用户负责连接文本节点。 不被视为冲突,但用户负责连接文本节点。 不被视为冲突,但用户负责连接文本节点。
相同的命名空间前缀在元素中声明两次。 XML 编写器为第二个命名空间生成新前缀。 XML 编写器为第二个命名空间生成新前缀。 XML 编写器为第二个命名空间生成新前缀。
WriteStartElement 指定一个前缀和一个未在该范围内声明的命名空间,或者该前缀与其他命名空间相关联。 XML 编写器写入必要的命名空间节点。 XML 编写器写入必要的命名空间节点。 XML 编写器写入必要的命名空间节点。
WriteStartAttribute 指定前缀和未在该范围内声明的命名空间。 XML 编写器写入必要的命名空间节点。 XML 编写器写入必要的命名空间节点。 XML 编写器写入必要的命名空间节点。
WriteStartAttribute 指定前缀和命名空间,但前缀与不同的范围内命名空间相关联。 XML 编写器忽略指定的前缀,并查找正确的前缀或生成新前缀。 XML 编写器忽略指定的前缀,并查找正确的前缀或生成新前缀。 XML 编写器忽略指定的前缀,并查找正确的前缀或生成新前缀。
WriteQualifiedName 用于通过使用范围中不存在的命名空间来写入元素内容。 XmlException 引发 。 XmlException 引发 。 XmlException 引发 。
WriteQualifiedName 用于通过使用范围中不存在的命名空间来写入属性内容。 XML 编写器写入必要的命名空间声明。 XML 编写器写入必要的命名空间声明。 XML 编写器写入必要的命名空间声明。
特性 xml:space 不包含有效值。 XmlException 引发 。 XmlException 引发 。 XmlException 引发 。
遇到无效的名称。 XmlException 引发 。 XmlException 引发 。 XmlException 引发 。
前缀 xml 与 URI 不匹配。 XML 编写器不会检查此类型的冲突。 XML 编写器不会检查此类型的冲突。 XML 编写器不会检查此类型的冲突。
前缀 xml 与 URI 不匹配 http://www.w3.org/XML/1998/namespace XmlException 引发 。 XmlException 引发 。 XmlException 引发 。
前缀 xmlns 或本地名称与 URI 不匹配。 XML 编写器不会检查此类型的冲突。 XML 编写器不会检查此类型的冲突。 XML 编写器不会检查此类型的冲突。
前缀 xmlns 或本地名称与 URI 不匹配 http://www.w3.org/2000/xmlns XmlException 引发 。 XmlException 引发 。 XmlException 引发 。

适用于