LA.Net
Reflexões sobre C#, .Net e programação em geral

Já que estamos numa de XML, queria apenas chamar a atenção para o facto da classe XmlValidatingReader não dever ser utilizada a partir da versão 2. Esta classe, que era utilizada na versão 1.XX para efectuar a validação de um documento de XML, deverá ser subsituída pela classe XmlReader que passará a ser utilizada em conjunto com a classe XmlReaderSettings. O exemplo seguinte mostra como podemos proceder para carregar um documento de XML válido e disponibilizá-lo através de uma classe do tipo XmlDataSource:

    1 <%@ Page Language="C#" %>

    2 <%@ Import Namespace="System.Xml" %>

    3 <%@ Import Namespace="System.Xml.Schema" %>

    4 

    5 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

    6 

    7 <script runat="server">

    8     private bool _processOK = true;

    9     protected override void OnLoad( EventArgs e )

   10     {

   11         base.OnLoad( e );

   12 

   13         XmlTextReader schemaReader = new XmlTextReader( this.MapPath( "Alunos.xsd" ) );

   14         XmlSchema      schema       = XmlSchema.Read( schemaReader, null );

   15         schema.Compile( null );

   16 

   17         XmlReaderSettings setts = new XmlReaderSettings();

   18         setts.ValidationType       = ValidationType.Schema;

   19         setts.Schemas.Add( schema );

   20         setts.ValidationEventHandler += new ValidationEventHandler( ProcessError );

   21         XmlReader reader = XmlReader.Create( this.MapPath("Alunos.xml" ), setts );

   22         XmlDocument doc = new XmlDocument( );

   23         doc.Load( reader );

   24 

   25         if(!_processOK)

   26         {

   27             tree.DataSourceID = "";

   28             return;           

   29         }

   30 

   31         source.Data = doc.InnerXml;

   32 

   33     }

   34 

   35     protected void ProcessError( object sender, ValidationEventArgs args )

   36     {

   37         info.Text  = args.Exception.ToString( );

   38         _processOK = false;

   39     }

   40 </script>

   41 

   42 <html xmlns="http://www.w3.org/1999/xhtml" >

   43 <head runat="server">

   44     <title>Untitled Page</title>

   45 </head>

   46 <body>

   47    <h3>XmlDataSource - validação dos dados</h3>

   48     <form id="form1" runat="server">

   49         <asp:TreeView runat="server" id="tree" DataSourceID="source">

   50             <DataBindings>

   51                 <asp:TreeNodeBinding DataMember="Nome" TextField="#innertext" Depth="2"  />

   52                 <asp:TreeNodeBinding DataMember="Morada" TextField="#innertext" Depth="2"  />

   53             </DataBindings>

   54         </asp:TreeView>

   55         <asp:XmlDataSource ID="source" runat="server" />

   56         <p />

   57         <asp:Label runat="server" ID="info" />

   58     </form>

   59 </body>

   60 </html>

posted on Saturday, February 12, 2005 11:59 PM
Comments
  • # re: XmlValidatingReader obsoleto
    Pedro Santos
    Posted @ 2/13/2005 8:36 AM
    Cheira-me que vai haver muitos problemas a migrar para a 2.0...
Title  
Name  
Url
Box Code
Protected by FormShield
Comments