Extensions.XPathEvaluate Método
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Avalia uma expressão XPath.
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. |
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
.
- Origem:
- XNodeNavigator.cs
- Origem:
- XNodeNavigator.cs
- Origem:
- XNodeNavigator.cs
Avalia uma expressão XPath.
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
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());
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())
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 |
- Origem:
- XNodeNavigator.cs
- Origem:
- XNodeNavigator.cs
- Origem:
- XNodeNavigator.cs
Avalia uma expressão XPath, resolvendo os prefixos de namespace usando o IXmlNamespaceResolver especificado.
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
- 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);
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)
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 |
Comentários do .NET
O .NET é um projeto código aberto. Selecione um link para fornecer comentários: