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 XML source de liaison.
Si vos données XML possèdent 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 le Prefix pour référencer l'espace de noms XML. Le ListBox de cette exemple affiche le titre et le dc:date de chaque élément.
<StackPanel.Resources>
<XmlNamespaceMappingCollection x:Key="mapping">
<XmlNamespaceMapping Uri="http://purl.org/dc/elements/1.1/" Prefix="dc" />
</XmlNamespaceMappingCollection>
<XmlDataProvider Source="https://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 spécifié ne doit pas correspondre à celui utilisé dans la source XML ; en cas de modification du préfixe dans la source XML, votre mappage fonctionne toujours.
Dans cet exemple, les données XML proviennent d'un service Web, mais l'élément XmlNamespaceMapping fonctionne aussi avec des données XML inline ou les données XML d'un fichier incorporé.
Voir aussi
Tâches
Comment : effectuer une liaison à des données XML à l'aide d'un XMLDataProvider et de requêtes XPath
Concepts
Vue d'ensemble de la liaison de données