Convalida dello schema con XPathNavigatorSchema Validation using XPathNavigator

La classe XmlDocument consente di convalidare il contenuto XML di un oggetto XmlDocument in due modi diversi.Using the XmlDocument class, you can validate the XML content contained in an XmlDocument object in two ways. Il primo modo prevede la convalida del contenuto XML mediante un oggetto di convalida XmlReader, mentre il secondo modo prevede l'uso del metodo Validate della classe XmlDocument.The first way is to validate the XML content using a validating XmlReader object and the second way is to use the Validate method of the XmlDocument class. È inoltre possibile eseguire la convalida di sola lettura del contenuto XML usando la classe XPathDocument.You can also perform read-only validation of XML content using the XPathDocument class.

Convalida di dati XMLValidating XML Data

Per impostazione predefinita, la classe XmlDocument non consente di convalidare un documento XML mediante la DTD (Document Type Definition) o lo schema XSD (XML Schema Definition Language).The XmlDocument class does not validate an XML document using either DTD or XML schema definition language (XSD) schema validation by default. Tale classe consente soltanto di verificare che il documento XML sia in formato corretto.It only verifies that the XML document is well formed.

Nel primo modo, il documento XML viene convalidato durante il caricamento in un oggetto XmlDocument usando un oggetto di convalida XmlReader.The first way to validate an XML document is to validate the document as it is loaded into an XmlDocument object using a validating XmlReader object. Nel secondo modo, il documento XML non tipizzato in precedenza viene convalidato usando il metodo Validate della classe XmlDocument.The second way is to validate a previously untyped XML document using the Validate method of the XmlDocument class. In entrambi i casi, le modifiche apportate al documento XML convalidato possono essere convalidate di nuovo usando il metodo Validate della classe XmlDocument.In both cases, changes to the validated XML document can be revalidated using the Validate method of the XmlDocument class.

Convalida di un documento durante il caricamentoValidating a Document as it is Loaded

Un oggetto di convalida XmlReader viene creato passando un oggetto XmlReaderSettings al metodo Create della classe XmlReader che accetta un oggetto XmlReaderSettings come parametro.A validating XmlReader object is created by passing an XmlReaderSettings object to the Create method of the XmlReader class that takes an XmlReaderSettings object as a parameter. Nell'oggetto XmlReaderSettings passato come parametro è presente una proprietà ValidationType impostata su Schema e un XML Schema per il documento XML contenuto nell'oggetto XmlDocument aggiunto alla relativa proprietà Schemas.The XmlReaderSettings object passed as a parameter has a ValidationType property set to Schema and an XML Schema for the XML document contained in the XmlDocument object added to its Schemas property. L'oggetto di convalida XmlReader viene quindi usato per creare l'oggetto XmlDocument.The validating XmlReader object is then used to create the XmlDocument object.

Nell'esempio seguente viene convalidato il contosoBooks.xml file durante il caricamento nel XmlDocument creando il XmlDocument utilizzando un oggetto di convalida dell'oggetto XmlReader oggetto.The following example validates the contosoBooks.xml file as it is loaded into the XmlDocument object by creating the XmlDocument object using a validating XmlReader object. Dal momento che il documento XML è valido in base al relativo schema, non verrà generato alcun errore o avviso di convalida dello schema.Because the XML document is valid according to its schema, no schema validation errors or warnings are generated.

Imports System  
Imports System.Xml  
Imports System.Xml.Schema  
Imports System.Xml.XPath  

Class ValidatingReaderExample  

    Shared Sub Main(ByVal args() As String)  

        Try  
            Dim settings As XmlReaderSettings = New XmlReaderSettings()  
            settings.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd")  
            settings.ValidationType = ValidationType.Schema  

            Dim reader As XmlReader = XmlReader.Create("contosoBooks.xml", settings)  

            Dim document As XmlDocument = New XmlDocument()  
            document.Load(reader)  
            Dim navigator As XPathNavigator = document.CreateNavigator()  

        Catch e As Exception  
            Console.WriteLine("ValidatingReaderExample.Exception: {0}", e.Message)  
        End Try  

    End Sub  

    Shared Sub SchemaValidationHandler(ByVal sender As Object, ByVal e As ValidationEventArgs)  

        Select Case e.Severity  
            Case XmlSeverityType.Error  
                Console.WriteLine("Schema Validation Error: {0}", e.Message)  
                Exit Sub  
            Case XmlSeverityType.Warning  
                Console.WriteLine("Schema Validation Warning: {0}", e.Message)  
                Exit Sub  
        End Select  

    End Sub  

End Class  
using System;  
using System.Xml;  
using System.Xml.Schema;  
using System.Xml.XPath;  

class ValidatingReaderExample  
{  
    static void Main(string[] args)  
    {  
        try  
        {  
            XmlReaderSettings settings = new XmlReaderSettings();  
            settings.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd");  
            settings.ValidationType = ValidationType.Schema;  

            XmlReader reader = XmlReader.Create("contosoBooks.xml", settings);  

            XmlDocument document = new XmlDocument();  
            document.Load(reader);  
            XPathNavigator navigator = document.CreateNavigator();  
        }  
        catch (Exception e)  
        {  
            Console.WriteLine("ValidatingReaderExample.Exception: {0}", e.Message);  
        }  
    }  

    static void SchemaValidationHandler(object sender, ValidationEventArgs e)  
    {  
        switch (e.Severity)  
        {  
            case XmlSeverityType.Error:  
                Console.WriteLine("Schema Validation Error: {0}", e.Message);  
                break;  
            case XmlSeverityType.Warning:  
                Console.WriteLine("Schema Validation Warning: {0}", e.Message);  
                break;  
        }  
    }  
}  

Nell'esempio il file contosoBooks.xml viene considerato come input.The example takes the contosoBooks.xml file as an input.

<?xml version="1.0" encoding="utf-8" ?>
<bookstore xmlns="http://www.contoso.com/books">
    <book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">
        <title>The Autobiography of Benjamin Franklin</title>
        <author>
            <first-name>Benjamin</first-name>
            <last-name>Franklin</last-name>
        </author>
        <price>8.99</price>
    </book>
    <book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">
        <title>The Confidence Man</title>
        <author>
            <first-name>Herman</first-name>
            <last-name>Melville</last-name>
        </author>
        <price>11.99</price>
    </book>
    <book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">
        <title>The Gorgias</title>
        <author>
            <name>Plato</name>
        </author>
        <price>9.99</price>
    </book>
</bookstore>

Anche il file contosoBooks.xsd viene considerato come input.The example also takes the contosoBooks.xsd as an input.

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.contoso.com/books" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="bookstore">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" name="book">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="title" type="xs:string" />
                            <xs:element name="author">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element minOccurs="0" name="name" type="xs:string" />
                                        <xs:element minOccurs="0" name="first-name" type="xs:string" />
                                        <xs:element minOccurs="0" name="last-name" type="xs:string" />
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="price" type="xs:decimal" />
                        </xs:sequence>
                        <xs:attribute name="genre" type="xs:string" use="required" />
                        <xs:attribute name="publicationdate" type="xs:date" use="required" />
                        <xs:attribute name="ISBN" type="xs:string" use="required" />
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

Nell'esempio precedente verrà generata un'eccezione XmlSchemaValidationException quando si chiama Load se il tipo di qualsiasi attributo o elemento non corrisponde al tipo specificato nello schema di convalida.In the above example, an XmlSchemaValidationException will be thrown when Load is called if any attribute or element type does not match the corresponding type specified in the validating schema. Se ValidationEventHandler è impostato sull'oggetto XmlReader di convalida, verrà chiamato ValidationEventHandler ogni volta in cui viene individuato un tipo non valido.If a ValidationEventHandler is set on the validating XmlReader, the ValidationEventHandler will get called whenever an invalid type is encountered.

Verrà generata un'eccezione XmlSchemaException quando TypedValue accede a un attributo o un elemento la cui proprietà invalid è impostata su XPathNavigator.An XmlSchemaException will be thrown when an attribute or element with TypedValue set to invalid is accessed by the XPathNavigator.

È possibile usare la proprietà Validity per determinare se un singolo attributo o elemento è valido quando si accede ad attributi o elementi tramite XPathNavigator.The Validity property can be used to determine whether or not an individual attribute or element is valid when accessing attributes or elements with the XPathNavigator.

Nota

Quando un documento XML viene caricato in un oggetto XmlDocument a cui è associato uno schema che definisce dei valori predefiniti, questi vengono considerati dall'oggetto XmlDocument come se fossero contenuti nel documento XML.When an XML document is loaded into an XmlDocument object with an associated schema that defines default values, the XmlDocument object treats these defaults as if they appeared in the XML document. Ciò significa che la proprietà IsEmptyElement restituisce sempre false per un elemento che è stato modificato dallo schema, anche se nel documento XML era stato scritto come elemento vuoto.This means that the IsEmptyElement property always returns false for an element that was defaulted from the schema, even if in the XML document it was written as an empty element.

Convalida di un documento con il metodo ValidateValidating a Document using the Validate Method

Il metodo Validate della classe XmlDocument consente di convalidare il documento XML contenuto in un oggetto XmlDocument in base agli schemi specificati nella proprietà XmlDocument dell'oggetto Schemas e di aumentare l'infoset.The Validate method of the XmlDocument class validates the XML document contained in an XmlDocument object against the schemas specified in the XmlDocument object's Schemas property and performs infoset augmentation. Il risultato è la sostituzione di un documento XML non tipizzato in precedenza nell'oggetto XmlDocument con un documento tipizzato.The result is a previously untyped XML document in the XmlDocument object replaced with a typed document.

Per segnalare gli errori e gli avvisi di convalida dello schema, nell'oggetto XmlDocument viene usato il delegato ValidationEventHandler passato come parametro al metodo Validate.The XmlDocument object reports schema validation errors and warnings using the ValidationEventHandler delegate passed as a parameter to the Validate method.

Nell'esempio seguente viene convalidato il file contosoBooks.xml contenuto nell'oggetto XmlDocument in base allo schema contosoBooks.xsd contenuto nella proprietà XmlDocument dell'oggetto Schemas.The following example validates the contosoBooks.xml file contained in the XmlDocument object against the contosoBooks.xsd schema contained in the XmlDocument object's Schemas property.

Imports System  
Imports System.Xml  
Imports System.Xml.Schema  
Imports System.Xml.XPath  

Class ValidateExample  

    Shared Sub Main(ByVal args() As String)  

        Dim document As XmlDocument = New XmlDocument()  
        document.Load("contosoBooks.xml")  
        Dim navigator As XPathNavigator = document.CreateNavigator()  

        document.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd")  
        Dim validation As ValidationEventHandler = New ValidationEventHandler(AddressOf SchemaValidationHandler)  

        document.Validate(validation)  

    End Sub  

    Shared Sub SchemaValidationHandler(ByVal sender As Object, ByVal e As ValidationEventArgs)  

        Select Case e.Severity  
            Case XmlSeverityType.Error  
                Console.WriteLine("Schema Validation Error: {0}", e.Message)  
                Exit Sub  
            Case XmlSeverityType.Warning  
                Console.WriteLine("Schema Validation Warning: {0}", e.Message)  
                Exit Sub  
        End Select  

    End Sub  

End Class  
using System;  
using System.Xml;  
using System.Xml.Schema;  
using System.Xml.XPath;  

class ValidateExample  
{  
    static void Main(string[] args)  
    {  
        XmlDocument document = new XmlDocument();  
        document.Load("contosoBooks.xml");  
        XPathNavigator navigator = document.CreateNavigator();  

        document.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd");  
        ValidationEventHandler validation = new ValidationEventHandler(SchemaValidationHandler);  

        document.Validate(validation);  
    }  

    static void SchemaValidationHandler(object sender, ValidationEventArgs e)  
    {  
        switch (e.Severity)  
        {  
            case XmlSeverityType.Error:  
                Console.WriteLine("Schema Validation Error: {0}", e.Message);  
                break;  
            case XmlSeverityType.Warning:  
                Console.WriteLine("Schema Validation Warning: {0}", e.Message);  
                break;  
        }  
    }  
}  

Nell'esempio il file contosoBooks.xml viene considerato come input.The example takes the contosoBooks.xml file as an input.

<?xml version="1.0" encoding="utf-8" ?>
<bookstore xmlns="http://www.contoso.com/books">
    <book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">
        <title>The Autobiography of Benjamin Franklin</title>
        <author>
            <first-name>Benjamin</first-name>
            <last-name>Franklin</last-name>
        </author>
        <price>8.99</price>
    </book>
    <book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">
        <title>The Confidence Man</title>
        <author>
            <first-name>Herman</first-name>
            <last-name>Melville</last-name>
        </author>
        <price>11.99</price>
    </book>
    <book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">
        <title>The Gorgias</title>
        <author>
            <name>Plato</name>
        </author>
        <price>9.99</price>
    </book>
</bookstore>

Anche il file contosoBooks.xsd viene considerato come input.The example also takes the contosoBooks.xsd as an input.

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.contoso.com/books" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="bookstore">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" name="book">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="title" type="xs:string" />
                            <xs:element name="author">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element minOccurs="0" name="name" type="xs:string" />
                                        <xs:element minOccurs="0" name="first-name" type="xs:string" />
                                        <xs:element minOccurs="0" name="last-name" type="xs:string" />
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="price" type="xs:decimal" />
                        </xs:sequence>
                        <xs:attribute name="genre" type="xs:string" use="required" />
                        <xs:attribute name="publicationdate" type="xs:date" use="required" />
                        <xs:attribute name="ISBN" type="xs:string" use="required" />
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

Convalida delle modificheValidating Modifications

Dopo aver apportato delle modifiche a un documento XML, è possibile convalidare le modifiche in base allo schema per il documento XML usando il metodo Validate della classe XmlDocument.After modifications are made to an XML document, you can validate the modifications against the schema for the XML document using the Validate method of the XmlDocument class.

Nell'esempio seguente viene convalidato il contosoBooks.xml file durante il caricamento nel XmlDocument creando il XmlDocument utilizzando un oggetto di convalida dell'oggetto XmlReader oggetto.The following example validates the contosoBooks.xml file as it is loaded into the XmlDocument object by creating the XmlDocument object using a validating XmlReader object. Il documento XML viene convalidato correttamente durante il caricamento e non viene generato alcun errore o avviso di convalida dello schema.The XML document is validated successfully as it is loaded without generating any schema validation errors or warnings. Nell'esempio vengono quindi apportate due modifiche al documento XML che risultano non valide in base allo schema contosoBooks.xsd.The example then makes two modifications to the XML document that are invalid according to the contosoBooks.xsd schema. Nella prima modifica viene inserito un elemento figlio non valido che genera un errore di convalida dello schema. Nella seconda modifica, invece, il valore di un nodo tipizzato viene impostato su un valore non valido in base al tipo del nodo e viene generata un'eccezione.The first modification inserts an invalid child element resulting in a schema validation error, and the second modification sets the value of a typed node to a value that is invalid according to the type of the node resulting in an exception.

Imports System  
Imports System.Xml  
Imports System.Xml.Schema  
Imports System.Xml.XPath  

Class ValidatingReaderExample  

    Shared Sub Main(ByVal args() As String)  

        Try  
            Dim settings As XmlReaderSettings = New XmlReaderSettings()  
            settings.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd")  
            settings.ValidationType = ValidationType.Schema  

            Dim reader As XmlReader = XmlReader.Create("contosoBooks.xml", settings)  

            Dim document As XmlDocument = New XmlDocument()  
            document.Load(reader)  
            Dim navigator As XPathNavigator = document.CreateNavigator()  

            Dim validation As ValidationEventHandler = New ValidationEventHandler(AddressOf SchemaValidationHandler)  

            navigator.MoveToChild("bookstore", "http://www.contoso.com/books")  
            navigator.MoveToChild("book", "http://www.contoso.com/books")  
            navigator.MoveToChild("author", "http://www.contoso.com/books")  

            navigator.AppendChild("<title>Book Title</title>")  

            document.Validate(validation)  

            navigator.MoveToParent()  
            navigator.MoveToChild("price", "http://www.contoso.com/books")  
            navigator.SetTypedValue(DateTime.Now)  
        Catch e As Exception  
            Console.WriteLine("ValidatingReaderExample.Exception: {0}", e.Message)  
        End Try  

    End Sub  

    Shared Sub SchemaValidationHandler(ByVal sender As Object, ByVal e As ValidationEventArgs)  

        Select Case e.Severity  
            Case XmlSeverityType.Error  
                Console.WriteLine("Schema Validation Error: {0}", e.Message)  
                Exit Sub  
            Case XmlSeverityType.Warning  
                Console.WriteLine("Schema Validation Warning: {0}", e.Message)  
                Exit Sub  
        End Select  

    End Sub  

End Class  
using System;  
using System.Xml;  
using System.Xml.Schema;  
using System.Xml.XPath;  

class ValidatingReaderExample  
{  
    static void Main(string[] args)  
    {  
        try  
        {  
            XmlReaderSettings settings = new XmlReaderSettings();  
            settings.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd");  
            settings.ValidationType = ValidationType.Schema;  

            XmlReader reader = XmlReader.Create("contosoBooks.xml", settings);  

            XmlDocument document = new XmlDocument();  
            document.Load(reader);  
            XPathNavigator navigator = document.CreateNavigator();  

            ValidationEventHandler validation = new ValidationEventHandler(SchemaValidationHandler);  

            navigator.MoveToChild("bookstore", "http://www.contoso.com/books");  
            navigator.MoveToChild("book", "http://www.contoso.com/books");  
            navigator.MoveToChild("author", "http://www.contoso.com/books");  

            navigator.AppendChild("<title>Book Title</title>");  

            document.Validate(validation);  

            navigator.MoveToParent();  
            navigator.MoveToChild("price", "http://www.contoso.com/books");  
            navigator.SetTypedValue(DateTime.Now);  
        }  
        catch (Exception e)  
        {  
            Console.WriteLine("ValidatingReaderExample.Exception: {0}", e.Message);  
        }  
    }  

    static void SchemaValidationHandler(object sender, ValidationEventArgs e)  
    {  
        switch (e.Severity)  
        {  
            case XmlSeverityType.Error:  
                Console.WriteLine("Schema Validation Error: {0}", e.Message);  
                break;  
            case XmlSeverityType.Warning:  
                Console.WriteLine("Schema Validation Warning: {0}", e.Message);  
                break;  
        }  
    }  
}  

Nell'esempio il file contosoBooks.xml viene considerato come input.The example takes the contosoBooks.xml file as an input.

<?xml version="1.0" encoding="utf-8" ?>
<bookstore xmlns="http://www.contoso.com/books">
    <book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">
        <title>The Autobiography of Benjamin Franklin</title>
        <author>
            <first-name>Benjamin</first-name>
            <last-name>Franklin</last-name>
        </author>
        <price>8.99</price>
    </book>
    <book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">
        <title>The Confidence Man</title>
        <author>
            <first-name>Herman</first-name>
            <last-name>Melville</last-name>
        </author>
        <price>11.99</price>
    </book>
    <book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">
        <title>The Gorgias</title>
        <author>
            <name>Plato</name>
        </author>
        <price>9.99</price>
    </book>
</bookstore>

Anche il file contosoBooks.xsd viene considerato come input.The example also takes the contosoBooks.xsd as an input.

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.contoso.com/books" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="bookstore">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" name="book">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="title" type="xs:string" />
                            <xs:element name="author">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element minOccurs="0" name="name" type="xs:string" />
                                        <xs:element minOccurs="0" name="first-name" type="xs:string" />
                                        <xs:element minOccurs="0" name="last-name" type="xs:string" />
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="price" type="xs:decimal" />
                        </xs:sequence>
                        <xs:attribute name="genre" type="xs:string" use="required" />
                        <xs:attribute name="publicationdate" type="xs:date" use="required" />
                        <xs:attribute name="ISBN" type="xs:string" use="required" />
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

Nell'esempio precedente, vengono apportate due modifiche al documento XML contenuto nell'oggetto XmlDocument.In the example above, two modifications are made to the XML document contained in the XmlDocument object. Durante il caricamento del documento XML, se fossero stati rilevati errori di convalida dello schema, sarebbero stati gestiti dal gestore eventi di convalida e darebbero stati scritti nella console.As the XML document was loaded, any schema validation errors encountered would have been handled by the validation event handler method and written to the console.

In questo esempio, gli errori di convalida sono stati introdotti dopo il caricamento del documento XML e sono stati rilevati usando il metodo Validate della classe XmlDocument.In this example, the validation errors were introduced after the XML document was loaded and were found using the Validate method of the XmlDocument class.

Le modifiche effettuate usando il metodo SetTypedValue della classe XPathNavigator hanno restituito un tipo InvalidCastException poiché il nuovo valore non era valido in base al tipo di schema del nodo.Modifications made using the SetTypedValue method of the XPathNavigator class resulted in an InvalidCastException because the new value was invalid according to the schema type of the node.

Per altre informazioni sulla modifica dei valori mediante il metodo SetTypedValue, vedere l'argomento Modifica dei dati XML con XPathNavigator.For more information about modifying values using the SetTypedValue method, see the Modify XML Data using XPathNavigator topic.

Convalida di sola letturaRead-Only Validation

La classe XPathDocument è una rappresentazione in memoria e di sola lettura di un documento XML.The XPathDocument class is a read-only, in-memory representation of an XML document. Le classi XPathDocument e XmlDocument consentono di creare oggetti XPathNavigator per esplorare e modificare i documenti XML.Both the XPathDocument class and the XmlDocument class create XPathNavigator objects to navigate and edit XML documents. Dal momento che la classe XPathDocument è di sola lettura, gli oggetti XPathNavigator restituiti dagli oggetti XPathDocument non sono in grado di modificare il documento XML contenuto nell'oggetto XPathDocument.Because the XPathDocument class is a read-only class, XPathNavigator object's returned from XPathDocument objects cannot edit the XML document contained in the XPathDocument object.

In caso di convalida, è possibile creare un oggetto XPathDocument nello stesso modo in cui si crea un oggetto XmlDocument usando un oggetto di convalida XmlReader come descritto in precedenza in questo argomento.In the case of validation, you can create an XPathDocument object just like you create an XmlDocument object using a validating XmlReader object as described earlier in this topic. L'oggetto XPathDocument consente di convalidare il documento XML durante il caricamento; tuttavia, dal momento che non è possibile modificare i dati XML nell'oggetto XPathDocument, non sarà possibile eseguire di nuovo la convalida del documento XML.The XPathDocument object validates the XML document as it is loaded, but because you cannot edit the XML data in the XPathDocument object, you cannot revalidate the XML document.

Per altre informazioni sulla creazioni di oggetti XPathNavigator modificabili e in sola lettura, vedere l'argomento Lettura di dati XML con XPathDocument e XmlDocument.For more information about read-only and editable XPathNavigator objects, see the Reading XML Data using XPathDocument and XmlDocument topic.

Vedere ancheSee Also

XmlDocument
XPathDocument
XPathNavigator
Elaborazione di dati XML con il modello di dati XPathProcess XML Data Using the XPath Data Model
Lettura di dati XML con XPathDocument e XmlDocumentReading XML Data using XPathDocument and XmlDocument
Selezione, valutazione e corrispondenza di dati XML con XPathNavigatorSelecting, Evaluating and Matching XML Data using XPathNavigator
Accesso ai dati XML con XPathNavigatorAccessing XML Data using XPathNavigator
Modifica di dati XML con XPathNavigatorEditing XML Data using XPathNavigator