Carregar dados de um leitor
Se um documento XML é carregado usando o Load método e um parâmetro de um XmlReader, há diferenças no comportamento que ocorre quando comparado ao comportamento de carregamento de dados de outros formatos. Se o leitor estiver em seu estado inicial, Load consome todo o conteúdo do leitor e cria o DOM (Document Object Model) XML a partir de todos os dados no leitor.
Se o leitor já estiver posicionado em um nó em algum lugar do documento, e o leitor for passado para o Load método, Load tentará ler o nó atual e todos os seus irmãos, até a tag final que fecha a profundidade atual na memória. O sucesso da tentativa Load depende do nó em que o leitor está quando a carga é tentada, pois Load verifica se o XML do leitor está bem formado. Se o XML não estiver bem formado, o Load lançará uma exceção. Por exemplo, o seguinte conjunto de nós contém dois elementos de nível raiz, o XML não está bem formado e Load lança uma exceção.
- Nó de comentário, seguido por um nó Element, seguido por um nó Element, seguido por um nó EndElement.
O conjunto de nós a seguir cria um DOM incompleto, porque não há nenhum elemento de nível raiz.
- Nó de comentário seguido por um nó ProcessingInstruction seguido por um nó Comment seguido por um nó EndElement.
Isso não gera uma exceção e os dados são carregados. Você pode adicionar um elemento raiz à parte superior desses nós e criar XML bem formado que pode ser salvo sem erros.
Se o leitor estiver posicionado em um nó folha que é inválido para o nível raiz de um documento (por exemplo, um espaço em branco ou nó de atributo), o leitor continuará a ler até ser posicionado em um nó que pode ser usado para a raiz. O documento começa a ser carregado neste momento.
Por padrão, Load não verifica se o XML é válido usando a definição de tipo de documento (DTD) ou a validação de esquema. Ele apenas verifica se o XML está bem formado. Para que a validação ocorra, você precisa criar um XmlReader usando a XmlReaderSettings classe. A XmlReader classe pode impor a validação usando um esquema DTD ou XSD (Schema Definition Language). A ValidationType propriedade na XmlReaderSettings classe determina se a instância impõe a XmlReader validação. Para obter mais informações sobre como validar dados XML, consulte a seção Comentários da XmlReader página de referência.