Cette documentation est archivée et n’est pas conservée.

XmlDataSource, classe

Remarque : cette classe est nouvelle dans le .NET Framework version 2.0.

Représente une source de données XML aux contrôles liés aux données.

Espace de noms : System.Web.UI.WebControls
Assembly : System.Web (dans system.web.dll)

public class XmlDataSource : HierarchicalDataSourceControl, IDataSource, IListSource
public class XmlDataSource extends HierarchicalDataSourceControl implements IDataSource, IListSource
public class XmlDataSource extends HierarchicalDataSourceControl implements IDataSource, IListSource

Le contrôle XmlDataSource est un contrôle de source de données qui présente les données XML aux contrôles liés aux données. Le contrôle XmlDataSource peut être utilisé par les contrôles liés aux données pour afficher à la fois les données hiérarchiques et les données sous forme de tableau. Le contrôle XmlDataSource est utilisé en général pour afficher les données XML hiérarchiques dans les scénarios en lecture seule. Dans la mesure où le contrôle XmlDataSource étend la classe HierarchicalDataSourceControl, il fonctionne avec les données hiérarchiques. Le contrôle XmlDataSource implémente également l'interface IDataSource et fonctionne avec les données sous forme de tableau ou de liste.

Les développeurs de pages utilisent le contrôle XmlDataSource pour afficher les données XML à l'aide de contrôles liés aux données.

Le XmlDataSource charge en général les données XML à partir d'un fichier XML qui est spécifié par la propriété DataFile. Les données XML peuvent également être stockées directement par le contrôle de source de données sous forme de chaîne à l'aide de la propriété Data. Si vous souhaitez transformer les données XML avant qu'elles soient affichées par un contrôle lié aux données, vous pouvez fournir une feuille de style XSL (Extensible Sylesheet Language) pour la transformation. Comme avec les données XML, vous chargez en général la feuille de style à partir d'un fichier, indiqué par la propriété TransformFile, mais vous pouvez également le stocker sous forme de chaîne directement à l'aide de la propriété Transform.

Le contrôle XmlDataSource est utilisé généralement dans les scénarios de données en lecture seule où un contrôle lié aux données affiche les données XML. Toutefois, vous pouvez aussi utiliser le contrôle XmlDataSource pour modifier les données XML. Pour modifier les données XML, appelez la méthode GetXmlDocument pour récupérer un objetXmlDataDocument qui constitue une représentation en mémoire des données XML. Vous pouvez utiliser le modèle objet exposé par les objets XmlDataDocument et XmlNode qu'il contient, ou utiliser l'expression filtrante XPath pour manipuler les données du document. Lorsque vous avez apporté des modifications à la représentation en mémoire des données XML, vous pouvez les enregistrer sur disque en appelant la méthode Save.

Les fonctions d'édition du contrôle XmlDataSource sont limitées :

  • Les données XML doivent être chargées à partir d'un fichier XML qui est indiqué par la propriété DataFile, pas à partir du XML inline spécifié dans la propriété Data.

  • Aucune transformation XSLT ne peut être spécifiée dans les propriétés Transform ou TransformFile.

  • La méthode Save ne gère pas d'opérations d'enregistrement simultanées effectuées par différentes demandes. Si plusieurs utilisateurs modifient un fichier XML à l'aide de XmlDataSource, il n'y a aucune garantie que tous les utilisateurs utilisent les mêmes données. Il est également possible qu'une opération Save échoue pour les mêmes problèmes d'accès simultané.

Une opération commune exécutée avec les données XML les transforment, les faisant passer d'un jeu de données XML à un autre. Le contrôle XmlDataSource prend en charge les transformations XML avec les propriétés Transform et TransformFile qui spécifient une feuille de style XSL à appliquer aux données XML avant qu'elles soient passées à un contrôle lié aux données, et la propriété TransformArgumentList qui vous permet de fournir des arguments de feuille de style XSLT dynamiques à utiliser par une feuille de style XSL pendant la transformation. Si vous spécifiez une expression de filtrage XPath à l'aide de la propriété XPath, elle s'applique après que la transformation ait eu lieu.

Par défaut, le contrôle XmlDataSource charge toutes les données XML dans le fichier XML identifié par la propriété DataFile ou trouvé inline dans la propriété Data, mais vous pouvez filtrer les données à l'aide d'une expression XPath. La propriété XPath prend en charge un filtre de syntaxe XPath qui est appliqué après que les données XML aient été chargées et transformées.

Pour des raisons de performances, la mise en cache est activée par défaut pour le contrôle XmlDataSource. L'ouverture et la lecture d'un fichier XML sur le serveur à chaque fois qu'une page est demandée peut réduire les performances de votre application. La mise en cache vous permet de réduire la charge de traitement sur votre serveur aux dépens de la mémoire sur le serveur Web ; dans la plupart des cas il s'agit d'un bon compromis. Le contrôle XmlDataSource met automatiquement en cache des données lorsque la propriété EnableCaching a la valeur true, et lorsque la valeur de la propriété CacheDuration consiste en le nombre de secondes pendant lesquelles le cache stocke les données avant que le cache soit invalidé. Vous pouvez utiliser le CacheExpirationPolicy pour affiner encore le comportement de mise en cache du contrôle de source de données.

Fonction

Description

Tri

Prise en charge impossible par le contrôle XmlDataSource.

Filtrage

La propriété XPath peut être utilisée pour filtrer les données XML à l'aide d'une expression XPath appropriée.

Pagination

Prise en charge impossible par le contrôle XmlDataSource.

Mise à jour

Prise en charge grâce à la manipulation directe du XmlDataDocument et à l'appel à la méthode Save.

Suppression

Prise en charge grâce à la manipulation directe du XmlDataDocument et à l'appel à la méthode Save.

Insertion

Prise en charge grâce à la manipulation directe du XmlDataDocument et à l'appel à la méthode Save.

Mise en cache

Activée par défaut, la propriété CacheDuration ayant la valeur 0 (infini) et la propriété CacheExpirationPolicy la valeur Absolute.

Dans la mesure où le contrôle XmlDataSource prend en charge les contrôles liés aux données qui affichent des données hiérarchiques aussi bien que ceux qui affichent les données sous forme de tableau, le contrôle de source de données prend en charge plusieurs types d'objets de vue de source de données dans ses données XML sous-jacentes. Le contrôle XmlDataSource récupère un objet XmlDataSourceView portant un nom unique lorsqu'il est utilisé avec un contrôle lié aux données qui affiche des données sous forme de tableau. La méthode GetViewNames identifie cet affichage portant un nom unique. Lorsqu'il est utilisé avec un contrôle lié aux données qui affiche des données hiérarchiques, le contrôle XmlDataSource récupère un XmlHierarchicalDataSourceView pour tout chemin d'accès hiérarchique unique passé à la méthode GetHierarchicalView.

Cette section comprend deux exemples de code. Le premier exemple de code montre comment utiliser un contrôle XmlDataSource avec un contrôle TreeView pour afficher les données XML issues du fichier XML exemple. Le deuxième exemple montre comment utiliser un contrôle XmlDataSource à l'aide d'un contrôle Repeater basé sur un modèle pour afficher les données XML.

L'exemple de code suivant montre comment utiliser un contrôle XmlDataSource à l'aide d'un contrôle TreeView pour afficher les données XML. Le XmlDataSource charge les données XML à partir du fichier XML identifié par la propriété DataFile.

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<HTML>
  <BODY>
    <form runat="server">
      <asp:xmldatasource
        id="XmlDataSource1"
        runat="server"
        datafile="books.xml" />

      <!- TreeView uses hierachical data, so the
          XmlDataSource uses an XmlHierarchicalDataSourceView
          when a TreeView is bound to it. -->

      <asp:treeview
        id="TreeView1"
        runat="server"
        datasourceid="XmlDataSource1">
        <databindings>
          <asp:treenodebinding datamember="book" textfield="title"/>
        </databindings>
      </asp:TreeView>

    </form>
  </BODY>
</HTML>

<%@ Page Language="VJ#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<HTML>
  <BODY>
    <form runat="server">
      <asp:xmldatasource
        id="XmlDataSource1"
        runat="server"
        datafile="books.xml" />

      <!- TreeView uses hierachical data, so the
          XmlDataSource uses an XmlHierarchicalDataSourceView
          when a TreeView is bound to it. -->

      <asp:treeview
        id="TreeView1"
        runat="server"
        datasourceid="XmlDataSource1">
        <databindings>
          <asp:treenodebinding datamember="book" textfield="title"/>
        </databindings>
      </asp:TreeView>

    </form>
  </BODY>
</HTML>

Le fichier XML de l'exemple de code possède les données suivantes :

<books>
   <computerbooks>
     <book title="Secrets of Silicon Valley" author="Sheryl Hunter"/>
     <book title="Straight Talk About Computers" author="Dean Straight"/>
     <book title="You Can Combat Computer Stress!" author="Marjorie Green"/>                
   </computerbooks>
   <cookbooks>
     <book title="Silicon Valley Gastronomic Treats" author="Innes del Castill"/>
   </cookbooks>
</books>

L'exemple de code suivant montre comment utiliser un contrôle XmlDataSource à l'aide d'un contrôle Repeater basé sur un modèle pour afficher les données XML. Le contrôle Repeater utilise une expression de liaison de données XPath pour se lier aux éléments de données dans le document XML que le XmlDataSource représente. Pour plus d'informations sur la syntaxe de liaison de données de XPath et de XPathSelect, consultez la classe XPathBinder.

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<HTML>
  <BODY>
    <form runat="server">
      <asp:XmlDataSource
        runat="server"
        id="XmlDataSource1"
        XPath="orders/order"
        DataFile="order.xml" />

      <asp:Repeater ID="Repeater1"
        runat="server"
        DataSourceID="XmlDataSource1">
        <ItemTemplate>
            <h2>Order</h2>
            <table>
              <tr>
                <td>Customer</td>
                <td><%#XPath("customer/@id")%></td>
                <td><%#XPath("customername/firstn")%></td>
                <td><%#XPath("customername/lastn")%></td>
              </tr>
              <tr>
                <td>Ship To</td>
                <td><%#XPath("shipaddress/address1")%></FONT></td>
                <td><%#XPath("shipaddress/city")%></td>
                <td><%#XPath("shipaddress/state")%>,
                    <%#XPath("shipaddress/zip")%></td>
              </tr>
            </table>
            <h3>Order Summary</H3>
            <asp:Repeater ID="Repeater2"
                 DataSource='<%#XPathSelect("summary/item")%>'
                 runat="server">
                <ItemTemplate>
                     <b><%#XPath("@dept")%></b> -
                         <%#XPath(".")%><br />
                </ItemTemplate>
            </asp:Repeater>
            <hr>
        </ItemTemplate>
    </asp:Repeater>

  </form>
  </BODY>
</HTML>

<%@ Page Language="VJ#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<HTML>
  <BODY>
      <asp:XmlDataSource
        runat="server"
        id="XmlDataSource1"
        XPath="orders/order"
        DataFile="order.xml" />

      <asp:Repeater ID="Repeater1"
        runat="server"
        DataSourceID="XmlDataSource1">
        <ItemTemplate>
            <h2>Order</h2>
            <table>
              <tr>
                <td>Customer</td>
                <td><%#XPath("customer/@id")%></td>
                <td><%#XPath("customername/firstn")%></td>
                <td><%#XPath("customername/lastn")%></td>
              </tr>
              <tr>
                <td>Ship To</td>
                <td><%#XPath("shipaddress/address1")%></FONT></td>
                <td><%#XPath("shipaddress/city")%></td>
                <td><%#XPath("shipaddress/state")%>,
                    <%#XPath("shipaddress/zip")%></td>
              </tr>
            </table>
            <h3>Order Summary</H3>
            <asp:Repeater ID="Repeater2"
                 DataSource='<%#XPathSelect("summary/item")%>'
                 runat="server">
                <ItemTemplate>
                     <b><%#XPath("@dept")%></b> -
                         <%#XPath(".")%><br />
                </ItemTemplate>
            </asp:Repeater>
            <hr>
        </ItemTemplate>
    </asp:Repeater>

  </form>
  </BODY>
</HTML>

Le fichier XML de l'exemple de code possède les données suivantes :

<?xml version="1.0" encoding="iso-8859-1"?>
 <orders>
   <order>
     <customer id="12345" />
     <customername>
         <firstn>John</firstn>
         <lastn>Smith</lastn>
     </customername>
     <transaction id="12345" />
     <shipaddress>
         <address1>1234 Tenth Avenue</address1>
         <city>Bellevue</city>
         <state>Washington</state>
         <zip>98001</zip>
     </shipaddress>
     <summary>
         <item dept="tools">screwdriver</item>
         <item dept="tools">hammer</item>
         <item dept="plumbing">fixture</item>
     </summary>
   </order>
</orders>

  • AspNetHostingPermission  pour opérer dans un environnement hébergé. Valeur de demande : LinkDemand ; valeur d'autorisation : Minimal
  • AspNetHostingPermission  pour opérer dans un environnement hébergé. Valeur de demande : InheritanceDemand ; valeur d'autorisation : Minimal

System.Object
   System.Web.UI.Control
     System.Web.UI.HierarchicalDataSourceControl
      System.Web.UI.WebControls.XmlDataSource

Les membres statiques publics (Shared en Visual Basic) de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition

Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.

.NET Framework

Prise en charge dans : 2.0
Afficher: