Extensions.XPathEvaluate Metódus

Definíció

Kiértékel egy XPath-kifejezést.

Túlterhelések

Name Description
XPathEvaluate(XNode, String)

Kiértékel egy XPath-kifejezést.

XPathEvaluate(XNode, String, IXmlNamespaceResolver)

Kiértékel egy XPath-kifejezést, és feloldja a névtér előtagjait a megadott IXmlNamespaceResolverhasználatával.

Megjegyzések

Bár a visszaadott gyűjtemények sorrendje nincs megadva az XML XPath Language 1.0 javaslatában, ez a bővítménymetódus dokumentumsorrendben adja vissza a csomópontokat.

Vegye figyelembe, hogy a csomópontok akkor is dokumentumsorrendben jelennek meg, ha fordított tengelyt használ, például preceding-sibling vagy ancestor-or-self.

XPathEvaluate(XNode, String)

Kiértékel egy XPath-kifejezést.

public:
[System::Runtime::CompilerServices::Extension]
 static System::Object ^ XPathEvaluate(System::Xml::Linq::XNode ^ node, System::String ^ expression);
public static object XPathEvaluate(this System.Xml.Linq.XNode node, string expression);
static member XPathEvaluate : System.Xml.Linq.XNode * string -> obj
<Extension()>
Public Function XPathEvaluate (node As XNode, expression As String) As Object

Paraméterek

node
XNode

Az XNode XPath-kifejezés kiértékelésének célja.

expression
String

XPath-kifejezést String tartalmazó kifejezés.

Válaszok

Olyan objektum, amely tartalmazhat egy bool, egy double, egy stringvagy több objektumot IEnumerable<T>.

Példák

Az alábbi példa egy kis XML-fát hoz létre egy attribútummal, majd a XPathEvaluate metódussal kéri le az attribútumot.

                String xml = "<root a='value'/>";
XDocument d = XDocument.Parse(xml);
IEnumerable att = (IEnumerable)d.XPathEvaluate("/root/@a");
Console.WriteLine(att.Cast<XAttribute>().FirstOrDefault());
                Dim d As XDocument = _
    <?xml version='1.0'?>
    <root a='value'/>
Dim att As IEnumerable = CType(d.XPathEvaluate("/root/@a"), IEnumerable)
Console.WriteLine(att.Cast(Of XAttribute)().FirstOrDefault())

Ez a példa a következő kimenetet hozza létre:

a="value"

Megjegyzések

Ha a gyűjtemény elemek vagy attribútumok számbavétele, az Cast operátorral lekérheti az elemek vagy XAttributeattribútumok gyűjteményétXElement.

Bár a visszaadott gyűjtemények sorrendje nincs megadva az XML XPath Language 1.0 javaslatában, ez a bővítménymetódus dokumentumsorrendben adja vissza a csomópontokat.

Vegye figyelembe, hogy a csomópontok akkor is dokumentumsorrendben jelennek meg, ha fordított tengelyt használ, például preceding-sibling vagy ancestor-or-self.

A következőre érvényes:

XPathEvaluate(XNode, String, IXmlNamespaceResolver)

Kiértékel egy XPath-kifejezést, és feloldja a névtér előtagjait a megadott IXmlNamespaceResolverhasználatával.

public:
[System::Runtime::CompilerServices::Extension]
 static System::Object ^ XPathEvaluate(System::Xml::Linq::XNode ^ node, System::String ^ expression, System::Xml::IXmlNamespaceResolver ^ resolver);
public static object XPathEvaluate(this System.Xml.Linq.XNode node, string expression, System.Xml.IXmlNamespaceResolver resolver);
static member XPathEvaluate : System.Xml.Linq.XNode * string * System.Xml.IXmlNamespaceResolver -> obj
<Extension()>
Public Function XPathEvaluate (node As XNode, expression As String, resolver As IXmlNamespaceResolver) As Object

Paraméterek

node
XNode

Az XNode XPath-kifejezés kiértékelésének célja.

expression
String

XPath-kifejezést String tartalmazó kifejezés.

resolver
IXmlNamespaceResolver

A IXmlNamespaceResolver névtér előtagjai az XPath kifejezésben.

Válaszok

A kifejezés kiértékelésének eredményét tartalmazó objektum. Az objektum lehet egy , egy booldouble, egy stringvagy egy IEnumerable<T>.

Példák

Az alábbi példa egy névteret tartalmazó XML-fát hoz létre. Az XML-dokumentum olvasásához használ egy XmlReader fájlt. Ezután kap egy XmlNameTable a XmlReader, és egy XmlNamespaceManager a XmlNameTable. Az elem kiválasztásakor használja az XmlNamespaceManager adott elemet.

                string markup =
@"<aw:Root xmlns:aw='http://www.adventure-works.com'>
    <aw:Child1 aw:Att='attdata'>child one data 1</aw:Child1>
</aw:Root>";
XmlReader reader = XmlReader.Create(new StringReader(markup));
XElement root = XElement.Load(reader);
XmlNameTable nameTable = reader.NameTable;
XmlNamespaceManager namespaceManager = new XmlNamespaceManager(nameTable);
namespaceManager.AddNamespace("aw", "http://www.adventure-works.com");
IEnumerable atts = (IEnumerable)root.XPathEvaluate("./aw:Child1/@aw:Att", namespaceManager);
IEnumerable<XAttribute> attList = atts.Cast<XAttribute>();
XAttribute att = attList.First();
Console.WriteLine(att);
                Dim markup As XElement = _
    <aw:Root xmlns:aw='http://www.adventure-works.com'>
        <aw:Child1 aw:Att='attdata'>child one data 1</aw:Child1>
    </aw:Root>
Dim reader As XmlReader = markup.CreateReader
Dim nameTable As XmlNameTable = reader.NameTable
Dim namespaceManager As XmlNamespaceManager = New XmlNamespaceManager(nameTable)
namespaceManager.AddNamespace("aw", "http://www.adventure-works.com")
Dim atts As IEnumerable = CType(markup.XPathEvaluate("./aw:Child1/@aw:Att", namespaceManager), IEnumerable)
Dim attList As IEnumerable(Of XAttribute) = atts.Cast(Of XAttribute)()
Dim att As XAttribute = attList.First()
Console.WriteLine(att)

Ez a példa a következő kimenetet hozza létre:

aw:Att="attdata"

Megjegyzések

Ezzel a módszerrel kiértékelheti a névtér előtagjait tartalmazó XPath-kifejezéseket.

Bár a visszaadott gyűjtemények sorrendje nincs megadva az XML XPath Language 1.0 javaslatában, ez a bővítménymetódus dokumentumsorrendben adja vissza a csomópontokat.

Vegye figyelembe, hogy a csomópontok akkor is dokumentumsorrendben jelennek meg, ha fordított tengelyt használ, például preceding-sibling vagy ancestor-or-self.

A következőre érvényes: