Extensions.XPathEvaluate Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
Návraty
Objekt, který může obsahovat bool
, a double
, string
nebo .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
- resolver
- IXmlNamespaceResolver
A IXmlNamespaceResolver pro předpony oboru názvů ve výrazu XPath.
Návraty
Objekt, který obsahuje výsledek vyhodnocení výrazu. Objekt může být a bool
, a double
, string
nebo .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
.