数据一致性和 XmlWriter
更新:November 2007
XmlWriter 类包括两个一致性检查设置。 可以将 XmlWriter 设置为检查写出的数据是否符合规则。
CheckCharacters 设置
XmlWriterSettings.CheckCharacters 属性指示写入器检查字符,如果任何字符不在合法 XML 字符的范围内,将引发 XmlException。 启用了字符检查后,可以确保文档中的所有字符均在 W3C XML 1.0 Recommendation(W3C XML 1.0 建议)定义的合法 XML 字符范围内。
说明: |
---|
字符检查不会检查 XML 名称中是否存在非法字符,也不会检查所有 XML 名称是否有效。 名称检查是一致性检查的标准部分。 有关更多信息,请参见 http://www.w3.org/TR/REC-xml#NT-Name。 |
默认情况下启用字符检查。
ConformanceLevel 设置
XmlWriterSettings.ConformanceLevel 属性将 XmlWriter 配置为检查并确保正在写入的流符合特定的规则集。 根据指定的一致性级别,可以检查 XML 数据是否符合格式正确的 XML 1.0 文档或文档片断适用的规则。 如果数据不符合规则,将引发 XmlException 或 ArgumentException。 默认设置为 ConformanceLevel.Document。
说明: |
---|
如果写入器配置为支持 ConformanceLevel.Fragment,但是 XML 数据包含文档类型定义 (DTD),写入器将引发异常。 如果存在 DTD,XML 1.0 建议要求文档级别的一致性。 因此,如果在配置为支持 ConformanceLevel.Fragment 的写入器上调用 WriteStartDocument 方法,写入器也将引发异常。 |
一致性级别 |
说明 |
||
---|---|---|---|
Document |
此设置确保输出符合格式正确的 XML 1.0 文档适用的规则,并且可以由任何兼容的处理器进行处理。
|
||
Fragment |
XML 数据符合格式正确的 XML 1.0 文档片断适用的规则。 此设置接受包含多个根元素的 XML 数据或位于顶级的文本节点。 此检查级别确保任何处理器可以将正在读取的流作为 XML 1.0 外部分析的实体使用。
|
||
Auto |
写入器基于传入的数据决定要应用的一致性检查级别。 如果不知道生成的 XML 是否将是格式正确的 XML 文档或片断,可以使用此设置。 在下列情况下应用文档一致性检查:
如果 XML 数据包含下列某一项,将应用片断一致性检查。
如果存在冲突,例如在根级别尝试写入文本节点和 DTD 时,将引发 XmlException。 如果使用 Create 方法为现有写入器添加附加功能,可以在包装方案中使用此设置。 在这种情况下,ConformanceLevel.Auto 不添加任何新的一致性检查。 一致性检查留给正在包装的写入器。 |