Extensions.XPathEvaluate Metoda

Definicja

Oblicza wyrażenie XPath.Evaluates an XPath expression.

Przeciążenia

XPathEvaluate(XNode, String)

Oblicza wyrażenie XPath.Evaluates an XPath expression.

XPathEvaluate(XNode, String, IXmlNamespaceResolver)

Oblicza wyrażenie XPath, rozwiązując prefiksy przestrzeni nazw przy użyciu określonego IXmlNamespaceResolver.Evaluates an XPath expression, resolving namespace prefixes using the specified IXmlNamespaceResolver.

Uwagi

Chociaż porządkowanie zwracanych kolekcji nie jest określone w zaleceniu XML XPath Language 1,0, ta metoda rozszerzenia zwraca węzły w kolejności dokumentu.Although the ordering of returned collections is not specified in the XML XPath Language 1.0 Recommendation, this extension method returns nodes in document order.

Należy zauważyć, że węzły są zwracane w kolejności dokumentu nawet w przypadku używania osi odwrotnej, preceding-sibling takiej ancestor-or-selfjak lub.Note that nodes are returned in document order even when you use a reverse axis, such as preceding-sibling or ancestor-or-self.

XPathEvaluate(XNode, String)

Oblicza wyrażenie XPath.Evaluates an XPath expression.

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

Parametry

node
XNode

XNode Na którym ma zostać obliczone wyrażenie XPath.The XNode on which to evaluate the XPath expression.

expression
String

A String , która zawiera wyrażenie XPath.A String that contains an XPath expression.

Zwraca

Obiekt, boolktóry może zawierać, a double IEnumerable<T>, stringlub.An object that can contain a bool, a double, a string, or an IEnumerable<T>.

Przykłady

Poniższy przykład tworzy małe drzewo XML z atrybutem, a następnie używa XPathEvaluate metody do pobierania atrybutu.The following example creates a small XML tree with an attribute, then uses the XPathEvaluate method to retrieve the attribute.

  
                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())  

Ten przykład generuje następujące wyniki:This example produces the following output:

a="value"  

Uwagi

Jeśli kolekcja jest wyliczeniem elementów lub atrybutów, można użyć Cast operatora w celu uzyskania XElement kolekcji lub XAttribute.If the collection is an enumeration of elements or attributes, you can use the Cast operator to get a collection of XElement or XAttribute.

Chociaż porządkowanie zwracanych kolekcji nie jest określone w zaleceniu XML XPath Language 1,0, ta metoda rozszerzenia zwraca węzły w kolejności dokumentu.Although the ordering of returned collections is not specified in the XML XPath Language 1.0 Recommendation, this extension method returns nodes in document order.

Należy zauważyć, że węzły są zwracane w kolejności dokumentu nawet w przypadku używania osi odwrotnej, preceding-sibling takiej ancestor-or-selfjak lub.Note that nodes are returned in document order even when you use a reverse axis, such as preceding-sibling or ancestor-or-self.

XPathEvaluate(XNode, String, IXmlNamespaceResolver)

Oblicza wyrażenie XPath, rozwiązując prefiksy przestrzeni nazw przy użyciu określonego IXmlNamespaceResolver.Evaluates an XPath expression, resolving namespace prefixes using the specified IXmlNamespaceResolver.

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

Parametry

node
XNode

XNode Na którym ma zostać obliczone wyrażenie XPath.The XNode on which to evaluate the XPath expression.

expression
String

A String , która zawiera wyrażenie XPath.A String that contains an XPath expression.

resolver
IXmlNamespaceResolver

A IXmlNamespaceResolver dla prefiksów przestrzeni nazw w wyrażeniu XPath.A IXmlNamespaceResolver for the namespace prefixes in the XPath expression.

Zwraca

Obiekt, który zawiera wynik oceny wyrażenia.An object that contains the result of evaluating the expression. Obiekt może być bool, stringa double,alub. IEnumerable<T>The object can be a bool, a double, a string, or an IEnumerable<T>.

Przykłady

Poniższy przykład tworzy drzewo XML, który zawiera przestrzeń nazw.The following example creates an XML tree that contains a namespace. Używa XmlReader do odczytywania dokumentu XML.It uses an XmlReader to read the XML document. XmlNameTable Następnie pobiera XmlReaderz i XmlNamespaceManager z.XmlNameTableIt then gets an XmlNameTable from the XmlReader, and an XmlNamespaceManager from the XmlNameTable. Używa XmlNamespaceManager podczas wybierania elementu.It uses the XmlNamespaceManager when selecting an element.

  
                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)  

Ten przykład generuje następujące wyniki:This example produces the following output:

aw:Att="attdata"  

Uwagi

Ta metoda służy do obliczania wyrażeń XPath, które zawierają prefiksy przestrzeni nazw.You can use this method to evaluate XPath expressions that contain namespace prefixes.

Chociaż porządkowanie zwracanych kolekcji nie jest określone w zaleceniu XML XPath Language 1,0, ta metoda rozszerzenia zwraca węzły w kolejności dokumentu.Although the ordering of returned collections is not specified in the XML XPath Language 1.0 Recommendation, this extension method returns nodes in document order.

Należy zauważyć, że węzły są zwracane w kolejności dokumentu nawet w przypadku używania osi odwrotnej, preceding-sibling takiej ancestor-or-selfjak lub.Note that nodes are returned in document order even when you use a reverse axis, such as preceding-sibling or ancestor-or-self.

Dotyczy