Extensions.XPathEvaluate Método

Definição

Avalia uma expressão XPath.

Sobrecargas

XPathEvaluate(XNode, String)

Avalia uma expressão XPath.

XPathEvaluate(XNode, String, IXmlNamespaceResolver)

Avalia uma expressão XPath, resolvendo os prefixos de namespace usando o IXmlNamespaceResolver especificado.

Comentários

Embora a ordenação de coleções retornadas não seja especificada na Recomendação XML XPath Language 1.0, esse método de extensão retorna nós na ordem do documento.

Observe que os nós são retornados na ordem do documento mesmo quando você usa um eixo inverso, como preceding-sibling ou ancestor-or-self.

XPathEvaluate(XNode, String)

Origem:
XNodeNavigator.cs
Origem:
XNodeNavigator.cs
Origem:
XNodeNavigator.cs

Avalia uma expressão XPath.

public static object XPathEvaluate (this System.Xml.Linq.XNode node, string expression);

Parâmetros

node
XNode

O XNode no qual a expressão XPath será avaliada.

expression
String

Um String que contém uma expressão XPath.

Retornos

Um objeto que pode conter bool, double, string ou IEnumerable<T>.

Exemplos

O exemplo a seguir cria uma árvore XML pequena com um atributo e usa o XPathEvaluate método para recuperar o atributo.

                String xml = "<root a='value'/>";  
XDocument d = XDocument.Parse(xml);  
IEnumerable att = (IEnumerable)d.XPathEvaluate("/root/@a");  
Console.WriteLine(att.Cast<XAttribute>().FirstOrDefault());  

Esse exemplo gera a saída a seguir:

a="value"  

Comentários

Se a coleção for uma enumeração de elementos ou atributos, você poderá usar o Cast operador para obter uma coleção de XElement ou XAttribute.

Embora a ordenação de coleções retornadas não seja especificada na Recomendação XML XPath Language 1.0, esse método de extensão retorna nós na ordem do documento.

Observe que os nós são retornados na ordem do documento mesmo quando você usa um eixo inverso, como preceding-sibling ou ancestor-or-self.

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 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

XPathEvaluate(XNode, String, IXmlNamespaceResolver)

Origem:
XNodeNavigator.cs
Origem:
XNodeNavigator.cs
Origem:
XNodeNavigator.cs

Avalia uma expressão XPath, resolvendo os prefixos de namespace usando o IXmlNamespaceResolver especificado.

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

Parâmetros

node
XNode

O XNode no qual a expressão XPath será avaliada.

expression
String

Um String que contém uma expressão XPath.

resolver
IXmlNamespaceResolver

Um IXmlNamespaceResolver para os prefixos de namespace na expressão XPath.

Retornos

Um objeto que contém o resultado da avaliação da expressão. O objeto pode ser um bool, double, string ou IEnumerable<T>.

Exemplos

O exemplo a seguir cria uma árvore XML que contém um namespace. Usa XmlReader para ler o documento XML. Então obtém XmlNameTable de XmlReader, e XmlNamespaceManager de XmlNameTable. Ele usa o XmlNamespaceManager ao selecionar um elemento .

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

Esse exemplo gera a saída a seguir:

aw:Att="attdata"  

Comentários

Você pode usar esse método para avaliar expressões XPath que contêm prefixos de namespace.

Embora a ordenação de coleções retornadas não seja especificada na Recomendação XML XPath Language 1.0, esse método de extensão retorna nós na ordem do documento.

Observe que os nós são retornados na ordem do documento mesmo quando você usa um eixo inverso, como preceding-sibling ou ancestor-or-self.

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 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