Lire en anglais

Partager via


XPathQueryGenerator Classe

Définition

Lorsqu’une classe représentant un contrat de données et les métadonnées représentant un membre du contrat sont fournies, produit une requête XPath pour le membre.

C#
public static class XPathQueryGenerator
Héritage
XPathQueryGenerator

Exemples

L’exemple suivant crée des requêtes XPath à partir de deux classes auxquelles les attributs DataContractAttribute et DataMemberAttribute ont été appliqués.

C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
using System.Runtime.Serialization;
using System.Xml;

namespace GeneratPathExample
{
    class Program
    {
        static void Main(string[] args)
        {
            // Get the type of the class that defines the data contract.
            Type t = typeof(Order);

            // Get the meta data for the specific members to be used in the query.
            MemberInfo[] mi = t.GetMember("Product");
            MemberInfo[] mi2 = t.GetMember("Value");
            MemberInfo[] mi3 = t.GetMember("Quantity");

            // Call the function below to generate and display the query.
            GenerateXPath(t, mi);
            GenerateXPath(t, mi2);
            GenerateXPath(t, mi3);

            // Get the type of the second class that defines a data contract.
            Type t2 = typeof(Line);

            // Get the meta data for the member to be used in the query.
            MemberInfo[] mi4 = t2.GetMember("Items");

            GenerateXPath(t2, mi4);

            Console.ReadLine();
        }

        static void GenerateXPath(Type t, MemberInfo[] mi)
        {

            // Create a new name table and name space manager.
            NameTable nt = new NameTable();
            XmlNamespaceManager xname = new XmlNamespaceManager(nt);

            // Generate the query and print it.
            string query = XPathQueryGenerator.CreateFromDataContractSerializer(
                t, mi, out xname);
            Console.WriteLine(query);
            Console.WriteLine();

            // Display the namespaces and prefixes used in the data contract.
            foreach (string s in xname)
                Console.WriteLine("{0}  = {1}", s, xname.LookupNamespace(s));

            Console.WriteLine();
        }
    }

    [DataContract(Namespace = "http://www.cohowinery.com/")]
    public class Line
    {
        private Order[] itemsValue;

        [DataMember]
        public Order[] Items
        {
            get { return itemsValue; }
            set { itemsValue = value; }
        }
    }

    [DataContract(Namespace = "http://contoso.com")]
    public class Order
    {
        private string productValue;
        private int quantityValue;
        private decimal valueValue;

        [DataMember(Name = "cost")]
        public decimal Value
        {
            get { return valueValue; }
            set { valueValue = value; }
        }

        [DataMember(Name = "quantity")]
        public int Quantity
        {
            get { return quantityValue; }
            set { quantityValue = value; }
        }

        [DataMember(Name = "productName")]
        public string Product
        {
            get { return productValue; }
            set { productValue = value; }
        }
    }
}

Remarques

Pour plus d’informations sur les contrats de données, consultez Utilisation des contrats de données.

Pour utiliser la classe, effectuez les quatre étapes suivantes :

  1. Créez le type de contrat de données en appliquant DataContractAttribute et DataMemberAttribute en fonction du type et de ses champs ou propriétés.

  2. Utilisez la méthode GetMember de la classe Type pour générer le tableau MemberInfo.

  3. Passez le type et le tableau à la méthode.

  4. Si nécessaire, utilisez le XmlNamespaceManager retourné par le paramètre namespaces pour examiner les espaces de noms XML référencés par les préfixes d’espaces de noms dans la requête XPath.

Notes

Le préfixe d'espace de noms « xg » (pour « XPath Generator ») est utilisé comme valeur par défaut dans le XPath. Ceci ne peut pas être modifié. Consultez plutôt la collection NameTable pour déterminer l’espace de noms auquel le préfixe est associé.

Méthodes

CreateFromDataContractSerializer(Type, MemberInfo[], StringBuilder, XmlNamespaceManager)

Crée un XPath à partir d’un contrat de données à l’aide du type de données de contrat, du tableau d’éléments de métadonnées, de l’élément de niveau supérieur et des espaces de noms spécifiés.

CreateFromDataContractSerializer(Type, MemberInfo[], XmlNamespaceManager)

Crée un XPath à partir d’un contrat de données à l’aide du type de contrat de données, du tableau d’éléments de métadonnées et des espaces de noms spécifiés.

S’applique à

Produit Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1