使用 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 “备注”部分。