Lire en anglais

Partager via


Comment écrire des requêtes sur XML dans des espaces de noms (LINQ to XML)

Pour écrire une requête sur XML qui se trouve dans un espace de noms, vous devez utiliser XName objets qui ont l’espace de noms approprié.

Pour C#, l'approche la plus courante consiste à initialiser un objet XNamespace à l'aide d'une chaîne contenant l'URI, puis à utiliser la surcharge d'opérateur d'addition pour combiner l'espace de noms avec le nom local.

Pour Visual Basic, l’approche la plus courante consiste à définir un espace de noms global, puis à utiliser des littéraux XML et des propriétés XML qui utilisent l’espace de noms global. Vous pouvez définir un espace de noms par défaut global, auquel cas les éléments dans les littéraux XML seront par défaut dans l'espace de noms. Vous pouvez également définir un espace de noms global avec un préfixe, puis utiliser le préfixe comme requis dans les littéraux XML et dans les propriétés XML. Comme avec d'autres formes de code XML, les attributs ne sont jamais dans aucun espace de noms par défaut.

Le premier exemple de cet article montre comment créer une arborescence XML dans un espace de noms par défaut. La deuxième montre comment créer une arborescence XML dans un espace de noms avec un préfixe.

Exemple : Créer une arborescence dans un espace de noms par défaut et récupérer des éléments

L’exemple suivant crée une arborescence XML qui se trouve dans un espace de noms par défaut, puis récupère une collection d’éléments.

C#
XNamespace aw = "http://www.adventure-works.com";
XElement root = XElement.Parse(
@"<Root xmlns='http://www.adventure-works.com'>
    <Child>1</Child>
    <Child>2</Child>
    <Child>3</Child>
    <AnotherChild>4</AnotherChild>
    <AnotherChild>5</AnotherChild>
    <AnotherChild>6</AnotherChild>
</Root>");
IEnumerable<XElement> c1 =
    from el in root.Elements(aw + "Child")
    select el;
foreach (XElement el in c1)
    Console.WriteLine((int)el);

Cet exemple produit la sortie suivante :

Output
1
2
3

Exemple : Créer une arborescence dans un espace de noms avec un préfixe et récupérer des éléments

En C#, vous écrivez des requêtes de la même façon que vous écriviez des requêtes sur une arborescence XML qui utilise un espace de noms avec un préfixe ou sur une arborescence XML avec un espace de noms par défaut.

L’exemple suivant crée une arborescence XML qui se trouve dans un espace de noms avec un préfixe, puis récupère une collection d’éléments.

C#
XNamespace aw = "http://www.adventure-works.com";
XElement root = XElement.Parse(
@"<aw:Root xmlns:aw='http://www.adventure-works.com'>
    <aw:Child>1</aw:Child>
    <aw:Child>2</aw:Child>
    <aw:Child>3</aw:Child>
    <aw:AnotherChild>4</aw:AnotherChild>
    <aw:AnotherChild>5</aw:AnotherChild>
    <aw:AnotherChild>6</aw:AnotherChild>
</aw:Root>");
IEnumerable<XElement> c1 =
    from el in root.Elements(aw + "Child")
    select el;
foreach (XElement el in c1)
    Console.WriteLine((int)el);

Cet exemple produit la sortie suivante :

Output
1
2
3

Voir aussi