Condividi tramite


XmlDocument.Validate Metodo

Definizione

Convalida l'oggetto in base agli XmlDocument schemi XSD (XML Schema Definition Language) contenuti nella Schemas proprietà .

Overload

Nome Descrizione
Validate(ValidationEventHandler)

Convalida l'oggetto in base agli XmlDocument schemi XSD (XML Schema Definition Language) contenuti nella Schemas proprietà .

Validate(ValidationEventHandler, XmlNode)

Convalida l'oggetto XmlNode specificato in base agli schemi XSD (XML Schema Definition Language) nella Schemas proprietà .

Validate(ValidationEventHandler)

Origine:
XmlDocument.cs
Origine:
XmlDocument.cs
Origine:
XmlDocument.cs
Origine:
XmlDocument.cs
Origine:
XmlDocument.cs

Convalida l'oggetto in base agli XmlDocument schemi XSD (XML Schema Definition Language) contenuti nella Schemas proprietà .

public:
 void Validate(System::Xml::Schema::ValidationEventHandler ^ validationEventHandler);
public void Validate(System.Xml.Schema.ValidationEventHandler? validationEventHandler);
public void Validate(System.Xml.Schema.ValidationEventHandler validationEventHandler);
member this.Validate : System.Xml.Schema.ValidationEventHandler -> unit
Public Sub Validate (validationEventHandler As ValidationEventHandler)

Parametri

validationEventHandler
ValidationEventHandler

Oggetto ValidationEventHandler che riceve informazioni sugli avvisi ed errori di convalida dello schema.

Eccezioni

Si è verificato un evento di convalida dello schema e non è stato specificato alcun ValidationEventHandler oggetto.

Esempio

Nell'esempio seguente viene illustrato l'uso del Validate metodo . Nell'esempio viene creato un oggetto XmlDocument contenente uno schema XSD associato utilizzando gli XmlReaderSettings oggetti e XmlReader . Nell'esempio viene quindi utilizzata la XPathNavigator classe per modificare erroneamente il valore tipizzato di un elemento nel documento XML che genera un errore di convalida dello schema.

using System;
using System.Xml;
using System.Xml.Schema;
using System.Xml.XPath;

class XPathValidation
{
    static void Main()
    {
        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);

            ValidationEventHandler eventHandler = new ValidationEventHandler(ValidationEventHandler);

            // the following call to Validate succeeds.
            document.Validate(eventHandler);

            // add a node so that the document is no longer valid
            XPathNavigator navigator = document.CreateNavigator();
            navigator.MoveToFollowing("price", "http://www.contoso.com/books");
            XmlWriter writer = navigator.InsertAfter();
            writer.WriteStartElement("anotherNode", "http://www.contoso.com/books");
            writer.WriteEndElement();
            writer.Close();

            // the document will now fail to successfully validate
            document.Validate(eventHandler);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }

    static void ValidationEventHandler(object sender, ValidationEventArgs e)
    {
        switch (e.Severity)
        {
            case XmlSeverityType.Error:
                Console.WriteLine("Error: {0}", e.Message);
                break;
            case XmlSeverityType.Warning:
                Console.WriteLine("Warning {0}", e.Message);
                break;
        }
    }
}
Imports System.Xml
Imports System.Xml.Schema
Imports System.Xml.XPath

Class XPathValidation

    Shared Sub Main()

        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 eventHandler As ValidationEventHandler = New ValidationEventHandler(AddressOf ValidationEventHandler)

            ' the following call to Validate succeeds.
            document.Validate(eventHandler)

            ' add a node so that the document is no longer valid
            Dim navigator As XPathNavigator = document.CreateNavigator()
            navigator.MoveToFollowing("price", "http://www.contoso.com/books")
            Dim writer As XmlWriter = navigator.InsertAfter()
            writer.WriteStartElement("anotherNode", "http://www.contoso.com/books")
            writer.WriteEndElement()
            writer.Close()

            ' the document will now fail to successfully validate
            document.Validate(eventHandler)

        Catch ex As Exception

            Console.WriteLine(ex.Message)

        End Try

    End Sub

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

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

    End Sub

End Class

L'esempio accetta i contosoBooks.xml file e contosoBooks.xsd come 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>
<?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>

Commenti

Il Validate metodo convalida i dati XML nell'oggetto XmlDocument rispetto agli schemi contenuti nella Schemas proprietà . Il Validate metodo esegue l'aumento dell'infoset. In particolare, dopo la convalida, vengono applicate le impostazioni predefinite dello schema, i valori di testo vengono convertiti in valori atomici in base alle esigenze e le informazioni sul tipo sono associate agli elementi di informazioni convalidati. Il risultato è un sottoalbero XML non tipizzato in precedenza nell'oggetto XmlDocument sostituito con un sottoalbero tipizzato.

Quando si usa il Validate metodo , tenere presente quanto segue:

  • Gli hint per la posizione dello schema, ad esempio xsi:schemaLocation o xsi:noNamespaceSchemaLocation vengono ignorati.
  • Gli schemi inline vengono ignorati.
  • Se si verificano errori di convalida dello schema durante la convalida, l'oggetto XmlDocument viene convalidato parzialmente con alcuni nodi con informazioni sul tipo corrette e alcune senza.
  • Il processo di convalida include il controllo dell'univocità e dei vincoli di riferimento (xs:ID, xs:IDREF, xs:keyrefxs:key, e xs:unique).

Si applica a

Validate(ValidationEventHandler, XmlNode)

Origine:
XmlDocument.cs
Origine:
XmlDocument.cs
Origine:
XmlDocument.cs
Origine:
XmlDocument.cs
Origine:
XmlDocument.cs

Convalida l'oggetto XmlNode specificato in base agli schemi XSD (XML Schema Definition Language) nella Schemas proprietà .

public:
 void Validate(System::Xml::Schema::ValidationEventHandler ^ validationEventHandler, System::Xml::XmlNode ^ nodeToValidate);
public void Validate(System.Xml.Schema.ValidationEventHandler? validationEventHandler, System.Xml.XmlNode nodeToValidate);
public void Validate(System.Xml.Schema.ValidationEventHandler validationEventHandler, System.Xml.XmlNode nodeToValidate);
member this.Validate : System.Xml.Schema.ValidationEventHandler * System.Xml.XmlNode -> unit
Public Sub Validate (validationEventHandler As ValidationEventHandler, nodeToValidate As XmlNode)

Parametri

validationEventHandler
ValidationEventHandler

Oggetto ValidationEventHandler che riceve informazioni sugli avvisi ed errori di convalida dello schema.

nodeToValidate
XmlNode

Oggetto XmlNode creato da un XmlDocument oggetto da convalidare.

Eccezioni

Il parametro dell'oggetto XmlNode non è stato creato da un oggetto XmlDocument.

Il parametro dell'oggetto XmlNode non è un elemento, un attributo, un frammento di documento o il nodo radice.

Si è verificato un evento di convalida dello schema e non è stato specificato alcun ValidationEventHandler oggetto.

Esempio

Per un esempio del Validate metodo , vedere il Validate metodo .

Commenti

Il Validate metodo convalida i dati XML nell'oggetto XmlNode rispetto agli schemi contenuti nella Schemas proprietà . Il Validate metodo esegue l'aumento dell'infoset. In particolare, dopo la convalida, vengono applicate le impostazioni predefinite dello schema, i valori di testo vengono convertiti in valori atomici in base alle esigenze e le informazioni sul tipo sono associate agli elementi di informazioni convalidati. Il risultato è un sottoalbero XML non tipizzato in precedenza nell'oggetto XmlDocument sostituito con un sottoalbero tipizzato.

Di seguito sono riportate note importanti da considerare quando si usa il Validate metodo .

  • Gli hint per la posizione dello schema, ad esempio xsi:schemaLocation o xsi:noNamespaceSchemaLocation vengono ignorati.

  • Gli schemi inline vengono ignorati.

  • Se si verificano errori di convalida dello schema durante la convalida, l'oggetto XmlDocument viene convalidato parzialmente con alcuni nodi con informazioni sul tipo corrette e alcune senza.

Se il nodo da convalidare è il nodo radice, il processo di convalida include il controllo dell'univocità e dei vincoli di riferimento (xs:ID, xs:IDREF, xs:keyxs:keyref, e xs:unique). In caso contrario, vengono omessi vincoli di univocità e riferimento.

Si applica a