Extensions.XPathEvaluate Método

Definición

Evalúa una expresión XPath.Evaluates an XPath expression.

Sobrecargas

XPathEvaluate(XNode, String)

Evalúa una expresión XPath.Evaluates an XPath expression.

XPathEvaluate(XNode, String, IXmlNamespaceResolver)

Evalúa una expresión XPath, resolviendo los prefijos de espacio de nombres mediante el IXmlNamespaceResolver especificado.Evaluates an XPath expression, resolving namespace prefixes using the specified IXmlNamespaceResolver.

Comentarios

Aunque el orden de las colecciones devueltas no se especifica en la recomendación XML XPath Language 1,0, este método de extensión devuelve nodos en el orden del documento.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.

Tenga en cuenta que los nodos se devuelven en el orden del documento, incluso cuando se usa un eje inverso, como preceding-sibling o ancestor-or-self .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)

Evalúa una expresión 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

Parámetros

node
XNode

XNode en el que se va a evaluar la expresión XPath.The XNode on which to evaluate the XPath expression.

expression
String

String que contiene una expresión XPath.A String that contains an XPath expression.

Devoluciones

Object

Objeto que puede contener un valor bool, double, string o IEnumerable<T>.An object that can contain a bool, a double, a string, or an IEnumerable<T>.

Ejemplos

En el ejemplo siguiente se crea un pequeño árbol XML con un atributo y, a continuación, se usa el XPathEvaluate método para recuperar el atributo.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())  

Este ejemplo produce el siguiente resultado:This example produces the following output:

a="value"  

Comentarios

Si la colección es una enumeración de elementos o atributos, puede utilizar el Cast operador para obtener una colección de XElement o 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.

Aunque el orden de las colecciones devueltas no se especifica en la recomendación XML XPath Language 1,0, este método de extensión devuelve nodos en el orden del documento.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.

Tenga en cuenta que los nodos se devuelven en el orden del documento, incluso cuando se usa un eje inverso, como preceding-sibling o ancestor-or-self .Note that nodes are returned in document order even when you use a reverse axis, such as preceding-sibling or ancestor-or-self.

Se aplica a

XPathEvaluate(XNode, String, IXmlNamespaceResolver)

Evalúa una expresión XPath, resolviendo los prefijos de espacio de nombres mediante el IXmlNamespaceResolver especificado.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);
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

Parámetros

node
XNode

XNode en el que se va a evaluar la expresión XPath.The XNode on which to evaluate the XPath expression.

expression
String

String que contiene una expresión XPath.A String that contains an XPath expression.

resolver
IXmlNamespaceResolver

IXmlNamespaceResolver para los prefijos de espacio de nombres de la expresión XPath.A IXmlNamespaceResolver for the namespace prefixes in the XPath expression.

Devoluciones

Object

Objeto que contiene el resultado de evaluar la expresión.An object that contains the result of evaluating the expression. El objeto puede ser bool, double, string o IEnumerable<T>.The object can be a bool, a double, a string, or an IEnumerable<T>.

Ejemplos

En el ejemplo siguiente se crea un árbol XML que contiene un espacio de nombres.The following example creates an XML tree that contains a namespace. Usa un objeto XmlReader para leer el documento XML.It uses an XmlReader to read the XML document. Después obtiene un objeto XmlNameTable de XmlReader y un objeto XmlNamespaceManager de XmlNameTable.It then gets an XmlNameTable from the XmlReader, and an XmlNamespaceManager from the XmlNameTable. Utiliza XmlNamespaceManager al seleccionar un elemento.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)  

Este ejemplo produce el siguiente resultado:This example produces the following output:

aw:Att="attdata"  

Comentarios

Puede utilizar este método para evaluar expresiones XPath que contengan prefijos de espacios de nombres.You can use this method to evaluate XPath expressions that contain namespace prefixes.

Aunque el orden de las colecciones devueltas no se especifica en la recomendación XML XPath Language 1,0, este método de extensión devuelve nodos en el orden del documento.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.

Tenga en cuenta que los nodos se devuelven en el orden del documento, incluso cuando se usa un eje inverso, como preceding-sibling o ancestor-or-self .Note that nodes are returned in document order even when you use a reverse axis, such as preceding-sibling or ancestor-or-self.

Se aplica a