Partilhar via


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 de dados já estiver posicionado num nó algures no documento, e for então passado para o método Load, Load tentará ler o nó atual e todos os seus irmãos, até à etiqueta final que fecha a profundidade atual e armazená-los na memória. O sucesso da tentativa Load depende do nó em que o leitor se encontra quando a carga é realizada, uma vez que 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 é bem formado e Load gera uma exceção.

  • Nó de comentário, seguido por um nó de elemento, seguido por um nó de elemento, seguido por um nó de fecho de elemento.

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ó de instrução de processamento seguido por um nó de comentário seguido por um nó de fim de elemento.

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 numa folha que é inválida 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é estar posicionado num nó que possa ser usado como 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 propriedade ValidationType na classe XmlReaderSettings determina se a validação é imposta pela instância XmlReader. Para obter mais informações sobre como validar dados XML, consulte a seção Comentários da XmlReader página de referência.

Ver também