Extensions.XPathEvaluate Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Wertet einen XPath-Ausdruck aus.
Überlädt
XPathEvaluate(XNode, String) |
Wertet einen XPath-Ausdruck aus. |
XPathEvaluate(XNode, String, IXmlNamespaceResolver) |
Wertet einen XPath-Ausdruck aus und löst Namespacepräfixe mit dem angegebenen IXmlNamespaceResolver auf. |
Hinweise
Obwohl die Reihenfolge der zurückgegebenen Auflistungen nicht in der XML XPath Language 1.0-Empfehlung angegeben ist, gibt diese Erweiterungsmethode Knoten in der Dokumentreihenfolge zurück.
Beachten Sie, dass Knoten in der Dokumentreihenfolge zurückgegeben werden, auch wenn Sie eine Umgekehrtachse verwenden, z preceding-sibling
. B. oder ancestor-or-self
.
XPathEvaluate(XNode, String)
Wertet einen XPath-Ausdruck aus.
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
Parameter
Gibt zurück
Ein Objekt, das einen bool
, einen double
, einen string
oder einen IEnumerable<T> enthalten kann.
Beispiele
Im folgenden Beispiel wird eine kleine XML-Struktur mit einem Attribut erstellt und dann die XPathEvaluate Methode zum Abrufen des Attributs verwendet.
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())
Dieses Beispiel erzeugt die folgende Ausgabe:
a="value"
Hinweise
Wenn die Auflistung eine Aufzählung von Elementen oder Attributen ist, können Sie den Cast
Operator verwenden, um eine Auflistung oder eine Auflistung abzurufen XElement XAttribute.
Obwohl die Reihenfolge der zurückgegebenen Auflistungen nicht in der XML XPath Language 1.0-Empfehlung angegeben ist, gibt diese Erweiterungsmethode Knoten in der Dokumentreihenfolge zurück.
Beachten Sie, dass Knoten in der Dokumentreihenfolge zurückgegeben werden, auch wenn Sie eine Umgekehrtachse verwenden, z preceding-sibling
. B. oder ancestor-or-self
.
Gilt für
XPathEvaluate(XNode, String, IXmlNamespaceResolver)
Wertet einen XPath-Ausdruck aus und löst Namespacepräfixe mit dem angegebenen IXmlNamespaceResolver auf.
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
Parameter
- resolver
- IXmlNamespaceResolver
Ein IXmlNamespaceResolver für die Namespacepräfixe im XPath-Ausdruck.
Gibt zurück
Ein Objekt, das das Ergebnis aus der Auswertung des Ausdrucks enthält. Das Objekt kann ein bool
, ein double
, ein string
oder ein IEnumerable<T> sein.
Beispiele
Im folgenden Beispiel wird eine XML-Struktur erstellt, die einen Namespace enthält. Zum Lesen des XML-Dokuments kommt dabei ein XmlReader zum Einsatz. Anschließend werden eine XmlNameTable aus dem XmlReader und ein XmlNamespaceManager aus der XmlNameTable abgerufen. Es verwendet die XmlNamespaceManager Auswahl eines Elements.
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)
Dieses Beispiel erzeugt die folgende Ausgabe:
aw:Att="attdata"
Hinweise
Sie können diese Methode verwenden, um XPath-Ausdrücke zu bewerten, die Namespacepräfixe enthalten.
Obwohl die Reihenfolge der zurückgegebenen Auflistungen nicht in der XML XPath Language 1.0-Empfehlung angegeben ist, gibt diese Erweiterungsmethode Knoten in der Dokumentreihenfolge zurück.
Beachten Sie, dass Knoten in der Dokumentreihenfolge zurückgegeben werden, auch wenn Sie eine Umgekehrtachse verwenden, z preceding-sibling
. B. oder ancestor-or-self
.