Caricamento di dati da un lettore
Se un documento XML viene caricato usando il metodo Load e un parametro di un lettore XmlReader, si otterrà un comportamento diverso rispetto alla situazione in cui i dati vengono caricati dagli altri formati. Se il lettore è nel suo stato iniziale, il metodo Load utilizzerà l'intero contenuto del lettore e compilerà il modello DOM XML usando tutti i dati nel lettore.
Se il lettore è già posizionato su un nodo in un punto del documento e quindi viene passato al metodo Load, Load tenta di leggere il nodo corrente e tutti i nodi di pari livello fino al tag di fine che chiude il livello corrente nella memoria. La riuscita del metodo Load dipende dal nodo sul quale si trova il lettore al momento del caricamento, in quanto con il metodo Load viene verificato che l'XML del lettore sia nel formato corretto. In caso contrario, il metodo Load genererà un’eccezione. Il set di nodi seguente, ad esempio, contiene due elementi di livello radice e poiché l'XML non ha un formato corretto, Load genera un'eccezione.
- Nodo Comment, seguito da un nodo Element, seguito da un nodo Element, seguito da un nodo EndElement.
Dal seguente set di nodi viene creato un DOM incompleto, in quanto non vi è alcun elemento di livello radice.
- Nodo Comment, seguito da un nodo ProcessingInstruction, seguito da un nodo Comment, seguito da un nodo EndElement.
In questo caso non viene generata un'eccezione e i dati vengono caricati. È possibile aggiungere un elemento radice sopra questi nodi e creare un XML in formato corretto che potrà essere salvato senza errori.
Se il lettore è posizionato su un nodo foglia non valido per il livello radice di un documento, quale un nodo spazio vuoto o attributo, il lettore continuerà a leggere finché non si posizionerà su un nodo che può essere usato per il livello radice. Il caricamento del documento avverrà a partire da questo punto.
Per impostazione predefinita, il metodo Load non verifica se l'XML è valido usando la DTD o la convalida dello schema. Verifica solo che l'XML sia in formato corretto. Affinché avvenga la convalida, è necessario creare un tipo XmlReader usando la classe XmlReaderSettings. La classe XmlReader consente di applicare la convalida usando una DTD o uno schema XSD (Schema definition language). La proprietà ValidationType della classe XmlReaderSettings consente di determinare se l'istanza XmlReader applica la convalida. Per altre informazioni sulla convalida dei dati XML, vedere la sezione Note della pagina di riferimento XmlReader.