从读取器加载数据

使用 Load 方法并传递参数 XmlReader 加载 XML 文档时,与从其他格式加载数据相比,行为存在差异。 如果读取器处于初始状态, Load 则使用读取器中的全部内容,并从读取器中的所有数据生成 XML 文档对象模型(DOM)。

如果读取器已位于文档中某个位置的节点上,并且将读取器传递给 Load 方法,Load 会尝试将当前节点及其所有同级节点(直到关闭当前深度的结束标记)读入内存。 尝试 Load 的成功取决于读取器在尝试加载时所依赖的节点,因为 Load 验证读取器中的 XML 格式正确。 如果 XML 格式不正确,Load 会引发异常。 例如,以下一组节点包含两个根级元素,XML 格式不正确,并 Load 引发异常。

  • 依次为 Comment 节点、Element 节点、Element 节点、EndElement 节点。

以下一组节点创建不完整的 DOM,因为没有根级元素。

  • Comment 节点,后跟 ProcessingInstruction 节点,后跟 Comment 节点,后跟 EndElement 节点。

这不会引发异常,并且数据已加载。 可以将根元素添加到这些节点的顶部,并创建格式正确的 XML,该 XML 可以保存而不出错。

如果读取器定位于对于文档的根级别来说无效的叶节点(如空白或属性节点),则读取器继续读取,直到定位在可用于根的节点上。 此时,文档开始加载。

默认情况下, Load 不验证 XML 是否使用文档类型定义(DTD)或架构验证有效。 它仅验证 XML 的格式是否正确。 要进行验证,需要使用 XmlReader 类创建一个 XmlReaderSettings。 该 XmlReader 类可以使用 DTD 或架构定义语言 (XSD) 架构强制实施验证。 ValidationType类的XmlReaderSettings属性决定XmlReader实例是否强制验证。 有关验证 XML 数据的详细信息,请参阅参考页的 XmlReader “备注”部分。

另请参阅