XmlWriterSettings.ConformanceLevel 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或设置的 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 引发 。 |