Extensions.XPathEvaluate Metoda

Definice

Vyhodnotí výraz XPath.

Přetížení

XPathEvaluate(XNode, String)

Vyhodnotí výraz XPath.

XPathEvaluate(XNode, String, IXmlNamespaceResolver)

Vyhodnotí výraz XPath a přeloží předpony oboru názvů pomocí zadaného IXmlNamespaceResolvervýrazu .

Poznámky

I když pořadí vrácených kolekcí není zadáno v doporučení XML XPath Language 1.0, tato metoda rozšíření vrací uzly v pořadí dokumentů.

Mějte na paměti, že uzly jsou vráceny v pořadí dokumentů, i když používáte zpětnou osu, například preceding-sibling nebo ancestor-or-self.

XPathEvaluate(XNode, String)

Vyhodnotí výraz 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

Parametry

node
XNode

Na XNode kterém se má vyhodnotit výraz XPath.

expression
String

A String obsahující výraz XPath.

Návraty

Object

Objekt, který může obsahovat bool, a double, stringnebo .IEnumerable<T>

Příklady

Následující příklad vytvoří malý strom XML s atributem a pak použije XPathEvaluate metodu k načtení atributu.

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

Tento příklad vytvoří následující výstup:

a="value"  

Poznámky

Pokud je kolekce výčet prvků nebo atributů, můžete pomocí operátoru Cast získat kolekci nebo XElement XAttribute.

I když pořadí vrácených kolekcí není zadáno v doporučení XML XPath Language 1.0, tato metoda rozšíření vrací uzly v pořadí dokumentů.

Mějte na paměti, že uzly jsou vráceny v pořadí dokumentů, i když používáte zpětnou osu, například preceding-sibling nebo ancestor-or-self.

Platí pro

XPathEvaluate(XNode, String, IXmlNamespaceResolver)

Vyhodnotí výraz XPath a přeloží předpony oboru názvů pomocí zadaného IXmlNamespaceResolvervýrazu .

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

Parametry

node
XNode

Na XNode kterém se má vyhodnotit výraz XPath.

expression
String

A String obsahující výraz XPath.

resolver
IXmlNamespaceResolver

A IXmlNamespaceResolver pro předpony oboru názvů ve výrazu XPath.

Návraty

Object

Objekt, který obsahuje výsledek vyhodnocení výrazu. Objekt může být a bool, a double, stringnebo .IEnumerable<T>

Příklady

Následující příklad vytvoří strom XML, který obsahuje obor názvů. XmlReader Používá k přečtení dokumentu XML. Pak získá XmlNameTable od XmlReadera XmlNamespaceManager z .XmlNameTable XmlNamespaceManager Používá se při výběru prvku.

                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)  

Tento příklad vytvoří následující výstup:

aw:Att="attdata"  

Poznámky

Tuto metodu můžete použít k vyhodnocení výrazů XPath, které obsahují předpony oboru názvů.

I když pořadí vrácených kolekcí není zadáno v doporučení XML XPath Language 1.0, tato metoda rozšíření vrací uzly v pořadí dokumentů.

Mějte na paměti, že uzly jsou vráceny v pořadí dokumentů, i když používáte zpětnou osu, například preceding-sibling nebo ancestor-or-self.

Platí pro