Share via


Comment : utiliser des espaces de noms XML dans la liaison de données

Exemple

Cet exemple montre comment gérer les espaces de noms spécifiés dans votre source de liaison XML.

Si vos données XML ont la définition d’espace de noms XML suivante :

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">

Vous pouvez utiliser l’élément XmlNamespaceMapping pour mapper l’espace de noms à un Prefix, comme dans l’exemple suivant. Vous pouvez ensuite utiliser l’espace Prefix de noms XML pour faire référence à l’espace de noms XML. Dans ListBox cet exemple, le titre et dc :date de chaque élément sont affichés.

<StackPanel.Resources>
  <XmlNamespaceMappingCollection x:Key="mapping">
    <XmlNamespaceMapping Uri="http://purl.org/dc/elements/1.1/" Prefix="dc" />
  </XmlNamespaceMappingCollection>

  <XmlDataProvider Source="http://msdn.microsoft.com/subscriptions/rss.xml"
                   XmlNamespaceManager="{StaticResource mapping}"
                   XPath="rss/channel/item" x:Key="provider"/>

  <DataTemplate x:Key="dataTemplate">
    <Border BorderThickness="1" BorderBrush="Gray">
      <Grid Width="600" Height="50">
        <Grid.RowDefinitions>
          <RowDefinition Height="25"/>
          <RowDefinition Height="25"/>
        </Grid.RowDefinitions>
        <TextBlock Grid.Row="0" Text="{Binding XPath=title}" />
        <TextBlock Grid.Row="1" Text="{Binding XPath=dc:date}" />
      </Grid>
    </Border>
  </DataTemplate>
</StackPanel.Resources>

<ListBox
  Width="600"
  Height="600"
  Background="Honeydew"
  ItemsSource="{Binding Source={StaticResource provider}}"
  ItemTemplate="{StaticResource dataTemplate}"/>

Notez que le Prefix paramètre que vous spécifiez n’a pas besoin de correspondre à celui utilisé dans la source XML. Si le préfixe change dans la source XML, votre mappage fonctionne toujours.

Dans cet exemple particulier, les données XML proviennent d’un service web, mais l’élément XmlNamespaceMapping fonctionne également avec des données XML inline ou XML dans un fichier incorporé.

Voir aussi