Condividi tramite


Extensions.XPathEvaluate Metodo

Definizione

Valuta un'espressione XPath.

Overload

XPathEvaluate(XNode, String)

Valuta un'espressione XPath.

XPathEvaluate(XNode, String, IXmlNamespaceResolver)

Valuta un'espressione XPath risolvendo i prefissi degli spazi dei nomi utilizzando l'oggetto IXmlNamespaceResolver specificato.

Commenti

Anche se l'ordinamento delle raccolte restituite non è specificato nella raccomandazione XML XPath Language 1.0, questo metodo di estensione restituisce i nodi nell'ordine dei documenti.

Si noti che i nodi vengono restituiti nell'ordine dei documenti anche quando si usa un asse inverso, ad esempio preceding-sibling o ancestor-or-self.

XPathEvaluate(XNode, String)

Origine:
XNodeNavigator.cs
Origine:
XNodeNavigator.cs
Origine:
XNodeNavigator.cs

Valuta un'espressione 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

Parametri

node
XNode

XNode sul quale valutare l'espressione XPath.

expression
String

String contenente un'espressione XPath.

Restituisce

Oggetto che può contenere bool, double, string o IEnumerable<T>.

Esempio

Nell'esempio seguente viene creato un piccolo albero XML con un attributo , quindi viene utilizzato il XPathEvaluate metodo per recuperare l'attributo .

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

Nell'esempio viene prodotto l'output seguente:

a="value"  

Commenti

Se la raccolta è un'enumerazione di elementi o attributi, è possibile usare l'operatore Cast per ottenere una raccolta di XElement o XAttribute.

Anche se l'ordinamento delle raccolte restituite non è specificato nella raccomandazione XML XPath Language 1.0, questo metodo di estensione restituisce i nodi nell'ordine dei documenti.

Si noti che i nodi vengono restituiti nell'ordine dei documenti anche quando si usa un asse inverso, ad esempio preceding-sibling o ancestor-or-self.

Si applica a

XPathEvaluate(XNode, String, IXmlNamespaceResolver)

Origine:
XNodeNavigator.cs
Origine:
XNodeNavigator.cs
Origine:
XNodeNavigator.cs

Valuta un'espressione XPath risolvendo i prefissi degli spazi dei nomi utilizzando l'oggetto IXmlNamespaceResolver specificato.

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

Parametri

node
XNode

XNode sul quale valutare l'espressione XPath.

expression
String

String contenente un'espressione XPath.

resolver
IXmlNamespaceResolver

IXmlNamespaceResolver per i prefissi degli spazi dei nomi nell'espressione XPath.

Restituisce

Oggetto contenente il risultato della valutazione dell'espressione. L'oggetto può essere bool, double, string o IEnumerable<T>.

Esempio

Nell'esempio seguente viene creata una struttura ad albero XML contenente uno spazio dei nomi . Per leggere il documento XML viene usato XmlReader. Quindi si ottiene XmlNameTable da XmlReader e XmlNamespaceManager da XmlNameTable. Usa quando XmlNamespaceManager si seleziona un 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)  

Nell'esempio viene prodotto l'output seguente:

aw:Att="attdata"  

Commenti

È possibile utilizzare questo metodo per valutare le espressioni XPath contenenti prefissi dello spazio dei nomi.

Anche se l'ordinamento delle raccolte restituite non è specificato nella raccomandazione XML XPath Language 1.0, questo metodo di estensione restituisce i nodi nell'ordine dei documenti.

Si noti che i nodi vengono restituiti nell'ordine dei documenti anche quando si usa un asse inverso, ad esempio preceding-sibling o ancestor-or-self.

Si applica a