XPathQueryGenerator.CreateFromDataContractSerializer 方法

定義

從資料合約建立 XPath。

多載

CreateFromDataContractSerializer(Type, MemberInfo[], XmlNamespaceManager)

使用指定的資料合約類型、中繼資料項目陣列及命名空間,從資料合約建立 XPath。

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

使用指定的資料合約型別、中繼資料項目陣列、最上層項目及命名空間,從資料合約建立 XPath。

CreateFromDataContractSerializer(Type, MemberInfo[], XmlNamespaceManager)

來源:
XPathQueryGenerator.cs
來源:
XPathQueryGenerator.cs
來源:
XPathQueryGenerator.cs

使用指定的資料合約類型、中繼資料項目陣列及命名空間,從資料合約建立 XPath。

public static string CreateFromDataContractSerializer (Type type, System.Reflection.MemberInfo[] pathToMember, out System.Xml.XmlNamespaceManager namespaces);

參數

type
Type

代表資料合約的型別。

pathToMember
MemberInfo[]

使用 GetMember 類別之 Type 方法產生的中繼資料,會指向用來產生查詢的特定資料成員。

namespaces
XmlNamespaceManager

在資料合約中找到的 XML 命名空間及其前置詞。

傳回

String

從型別和成員資料產生的 XPath。

範例

下列範例會從兩個類別建立 XPath 查詢,這兩個類別均已套用 DataContractAttributeDataMemberAttribute 屬性。

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; }
        }
    }
}

備註

如需資料合約的詳細資訊,請參閱 使用資料合約

適用於

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

來源:
XPathQueryGenerator.cs
來源:
XPathQueryGenerator.cs
來源:
XPathQueryGenerator.cs

使用指定的資料合約型別、中繼資料項目陣列、最上層項目及命名空間,從資料合約建立 XPath。

public static string CreateFromDataContractSerializer (Type type, System.Reflection.MemberInfo[] pathToMember, System.Text.StringBuilder? rootElementXpath, out System.Xml.XmlNamespaceManager namespaces);
public static string CreateFromDataContractSerializer (Type type, System.Reflection.MemberInfo[] pathToMember, System.Text.StringBuilder rootElementXpath, out System.Xml.XmlNamespaceManager namespaces);

參數

type
Type

代表資料合約的型別。

pathToMember
MemberInfo[]

使用 GetMember 類別之 Type 方法產生的中繼資料,會指向用來產生查詢的特定資料成員。

rootElementXpath
StringBuilder

XPath 中的最上層項目

namespaces
XmlNamespaceManager

在資料合約中找到的 XML 命名空間及其前置詞。

傳回

String

從型別和成員資料產生的 XPath。

適用於