Como validar um documento XML utilizando o DTD, XDR ou XSD no Visual C# .NET

Traduções deste artigo Traduções deste artigo
ID do artigo: 307379 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Este artigo demonstra como aplicar uma definição de tipo de documento (DTD), um esquema de Microsoft XML-Data Reduced (XDR) ou um esquema de linguagem de definição de esquema XML (XSD) para um documento Extensible Markup Language (XML). Este artigo também descreve como usar a classe XmlValidatingReader para validar um documento XML em relação a gramática especificada, bem como usar a classe XmlSchemaCollection para esquemas de cache na memória para otimizar a validação do XML.

Os documentos XML contêm elementos e atributos. Eles fornecem uma maneira flexível e poderosa para a troca de dados entre aplicativos e organizações. Para especificar a estrutura permitida e o conteúdo de um documento XML, você pode escrever um DTD, um esquema XDR ou um esquema XSD. Os esquemas XSD são o método preferido para especificar gramáticas XML no Microsoft.NET Framework, mas os DTDs e esquemas XDR também são suportados.

Requisitos

Este artigo pressupõe que você conhece os seguintes tópicos:
  • Microsoft Visual C# .NET ou o Microsoft Visual Basic.NETsyntax
  • Conceitos XML, incluindo problemas de validação

Criar um documento XML

  1. Inicie o Visual Studio .NET.
  2. Crie um novo arquivo XML no computador local.
  3. Adicione os seguintes dados para o documento XML para representar o aproduct em um catálogo:
    <Product ProductID="123">
       <ProductName>Rugby jersey</ProductName>
    </Product>
    					
  4. Salve o arquivo como Product em um novo namedC:\MyFolder de pasta.

Usando o DTD

Criar o DTD e vincular a documento XML

  1. No .NET do Visual Studio, crie um arquivo de texto vazio.
  2. Adicione as seguintes declarações de DTD para o arquivo de gramática de describethe do documento XML:
    <!ELEMENT Product (ProductName)>
    <!ATTLIST Product ProductID CDATA #REQUIRED>
    <!ELEMENT ProductName (#PCDATA)>
    					
  3. Salve o arquivo como Product.dtd na C:\MyFolderdirectory.
  4. Abra Product no Visual Studio .NET.
  5. Adicione a seguinte declaração de DOCTYPE na parte superior do Product para vincular o documento XML para o arquivo DTD:
    <?xml version="1.0"?>
    <!DOCTYPE Product SYSTEM "Product.dtd">
    					
  6. Salve o asProductWithDTD.xml de documento XML modificado.

Use o DTD para validar o documento XML

  1. No .NET do Visual Studio, crie um novo projeto do Visual C# ConsoleApplication chamado ValidateXml.
  2. Adicione duas instruções using ao início de Class1. cs da seguinte maneira:
    using System.Xml;        // for XmlTextReader and XmlValidatingReader
    using System.Xml.Schema; // for XmlSchemaCollection (which is used later)
    					
  3. No Class1. cs, declare uma variável boolean denominada isValid antes do início do método Main da seguinte maneira:
    private static bool isValid = true;      // If a validation error occurs,
                                             // set this flag to false in the
                                             // validation event handler. 
  4. Crie um objeto XmlTextReader para ler um documento XML de um arquivo de texto no método Main e, em seguida, criar um XmlValidatingReader para validar dados XML da seguinte maneira:
    XmlTextReader r = new XmlTextReader("C:\\MyFolder\\ProductWithDTD.xml");
    XmlValidatingReader v = new XmlValidatingReader(r);
    					
  5. A propriedade ValidationType do objeto XmlValidatingReader indica o tipo de validação é necessária (DTD, XDRou esquema). Defina esta propriedade como DTD da seguinte maneira:
    v.ValidationType = ValidationType.DTD;
    					
  6. Se ocorrerem erros de validação, a validação readergenerates um evento de validação. Adicione o seguinte código para registrar um manipulador de validationevent (você implementará o método MyValidationEventHandler na etapa 8):
    v.ValidationEventHandler += 
       new ValidationEventHandler(MyValidationEventHandler);
    					
  7. Adicione o seguinte código para ler e validar o XMLdocument. Se ocorrerem erros de validação, MyValidationEventHandler é chamado para resolver o erro. Este método define isValid como false (consulte a etapa 8). Você pode verificar o status de isValid após a validação para verificar se o documento é válido ou é inválido.
    while (v.Read())
    {
       // Can add code here to process the content.
    }
    v.Close();
    
    // Check whether the document is valid or invalid.
    if (isValid)
       Console.WriteLine("Document is valid");
    else
       Console.WriteLine("Document is invalid");
    					
  8. Escreva o método MyValidationEventHandler após o método Main da seguinte maneira:
    public static void MyValidationEventHandler(object sender, 
                                                ValidationEventArgs args) 
    {
       isValid = false;
       Console.WriteLine("Validation event\n" + args.Message);
    }
    					
  9. Compilar e executar o aplicativo. Shouldreport o aplicativo que o documento XML é válido.
  10. No Visual Studio .NET de, modificar ProductWithDTD.xml toinvalidate-lo (por exemplo, excluir o elemento "<ProductName>Rugbyjersey</ProductName>").
  11. Execute o aplicativo novamente. Você deve receber a mensagem de followingerror:
    Eventos de validação
    Elemento ' conteúdo inválido Product'has. Esperado 'ProductName'.
    Erro atfile:///C:/MyFolder/ProductWithDTD.xml (4, 5).
    O documento é inválido

Usando o esquema XDR

Crie o esquema XDR e vincular a documento XML

  1. No .NET do Visual Studio, crie um arquivo de texto vazio.
  2. Adicione as seguintes definições de esquema XDR para todescribe o arquivo de gramática do documento XML:
    <?xml version="1.0"?>
    <Schema name="ProductSchema" 
            xmlns="urn:schemas-microsoft-com:xml-data"
            xmlns:dt="urn:schemas-microsoft-com:datatypes">
    
       <ElementType name="Product" content="eltOnly">
          <attribute type="ProductID" required="yes"/>
          <element type="ProductName"/>
       </ElementType>
    
       <AttributeType name="ProductID" dt:type="int"/>
       <ElementType name="ProductName" dt:type="string"/>
    </Schema>
    					
  3. Salve o arquivo como Product.xdr na C:\MyFolderdirectory.
  4. Abra o arquivo original do Product e vinculá-lo para o XDRschema da seguinte forma:
    <?xml version="1.0"?>
    <Product ProductID="123" xmlns="x-schema:Product.xdr"> 
       <ProductName>Rugby jersey</ProductName>
    </Product>
    					
  5. Salve o asProductWithXDR.xml de documento XML modificado.

Usar o esquema XDR para validar o documento XML

  1. Modifique seu aplicativo para que XmlTextReader carrega ProductWithXDR.xml da seguinte forma:
    XmlTextReader r = new XmlTextReader("C:\\MyFolder\\ProductWithXDR.xml");
    					
  2. Defina o ValidationType como XDR para que o leitor validar executa a validação de XDR:
    v.ValidationType = ValidationType.XDR;
    					
  3. Compilar e executar o aplicativo. Shouldreport o aplicativo que o documento XML é válido.
  4. Modifique ProductWithXDR.xml para invalidar.
  5. Compilar e executar o aplicativo novamente. Você deve receber o erro avalidation.

Usando o esquema XSD

Criar o esquema XSD e vincular a documento XML

  1. No .NET do Visual Studio, crie um arquivo de texto vazio.
  2. Adicione as seguintes definições de esquema XSD para o arquivo todescribe a gramática do documento XML:
    <?xml version="1.0"?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
       <xsd:element name="Product">
          <xsd:complexType>
             <xsd:sequence>
                <xsd:element name="ProductName" type="xsd:string"/>
             </xsd:sequence>
             <xsd:attribute name="ProductID" use="required" type="xsd:int"/>
          </xsd:complexType>
       </xsd:element>
    </xsd:schema>
    					
  3. Salve o arquivo como Product.xsd na C:\MyFolderdirectory.
  4. Abra o Product original e vinculá-lo para o XSDschema da seguinte forma:
    <?xml version="1.0"?>
    <Product ProductID="123" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:noNamespaceSchemaLocation="Product.xsd">
       <ProductName>Rugby jersey</ProductName>
    </Product>
    					
  5. Salve o asProductWithXSD.xml de documento XML modificado.

Usar o esquema XSD para validar o documento XML

  1. Modifique seu aplicativo para que XmlTextReader carrega ProductWithXSD.xml da seguinte forma:
    XmlTextReader r = new XmlTextReader("C:\\MyFolder\\ProductWithXSD.xml");
    					
  2. Defina o ValidationType ao esquema para que o leitor validar executa a validação de esquema XSD:
    v.ValidationType = ValidationType.Schema;
    					
  3. Crie e execute o aplicativo para usar o tovalidate de esquema XSD do documento XML.

Usar espaços para nome do esquema XSD

  1. No .NET do Visual Studio, abra ProductWithXSD.xml.
  2. Declare um namespace de padrão urn: MyNamespace no documento. Além disso, modificar o link XSD assim que itspecifies o esquema XSD para validar o conteúdo neste espaço para nome:
    <?xml version="1.0"?>
    <Product ProductID="123" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns="urn:MyNamespace"
             xsi:schemaLocation="urn:MyNamespace Product.xsd">
       <ProductName>Rugby jersey</ProductName>
    </Product>
    					
  3. Salve as alterações para ProductWithXSD.xml.
  4. Abra Product.xsd. Modificar o <xsd:schema>tagas inicial segue para que se aplica o esquema para o namespace urn: MyNamespace:</xsd:schema>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                targetNamespace="urn:MyNamespace"
                elementFormDefault="qualified">
    					
  5. Salve as alterações para Product.xsd.
  6. Crie e execute o aplicativo para usar o tovalidate de esquema XSD do documento XML.

Namespaces de cache

  1. No .NET do Visual Studio, abra Class1. cs. Crie um objeto XmlSchemaCollection no início do método Main da seguinte maneira:
    XmlSchemaCollection cache = new XmlSchemaCollection();
    					
  2. O objeto XmlSchemaCollection permite esquemas de cache na memória para improvedperformance. Cada esquema está associada com um namespace diferente. Adicione código asseguintes cache Product.xsd:
    cache.Add("urn:MyNamespace", "C:\\MyFolder\\Product.xsd");
    					
  3. Adicione a instrução a seguir após o código que cria o objetoXmlValidatingReader para adicionar o cache de esquema XmlValidatingReader para que o leitor possa usar os esquemas de memória:
    v.Schemas.Add(cache);
    					

Verificar se ele funciona

  1. Criar e executar o aplicativo.
  2. Verifique se que o documento XML ainda é validado em relação ao esquema de theXSD.
  3. Modifique ProductWithXSD.xml para invalidar.
  4. Verifique se o aplicativo detecta essas validationerrors.

Propriedades

ID do artigo: 307379 - Última revisão: domingo, 9 de fevereiro de 2014 - Revisão: 4.0
A informação contida neste artigo aplica-se a:
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
Palavras-chave: 
kbhowtomaster kbmt KB307379 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido pelo software de tradução automática da Microsoft e eventualmente pode ter sido editado pela Microsoft Community através da tecnologia Community Translation Framework (CTF) ou por um tradutor profissional. A Microsoft oferece artigos traduzidos automaticamente por software, por tradutores profissionais e editados pela comunidade para que você tenha acesso a todos os artigos de nossa Base de Conhecimento em diversos idiomas. No entanto, um artigo traduzido pode conter erros de vocabulário, sintaxe e/ou gramática. A Microsoft não é responsável por qualquer inexatidão, erro ou dano causado por qualquer tradução imprecisa do conteúdo ou por seu uso pelos nossos clientes.
Clique aqui para ver a versão em Inglês deste artigo: 307379

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com