如果使用 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。
如果读取器定位于对于文档的根级别来说无效的叶节点(如空白或属性节点),则读取器继续读取,直到定位在可用于根的节点上。 文档在此时开始加载。
默认情况下,Load 不会使用文档类型定义 (DTD) 或架构验证来验证 XML 是否有效。 只验证 XML 的格式是否正确。 要进行验证,需要使用 XmlReader 类创建一个 XmlReaderSettings。 XmlReader 类可以使用 DTD 或架构定义语言 (XSD) 架构强制进行验证。 ValidationType 类的 XmlReaderSettings 属性确定 XmlReader 实例是否强制进行验证。 有关验证 XML 数据的详细信息,请参阅 XmlReader 引用页的“备注”部分。