Extensions.XPathEvaluate 方法

定义

计算 XPath 表达式。

重载

XPathEvaluate(XNode, String)

计算 XPath 表达式。

XPathEvaluate(XNode, String, IXmlNamespaceResolver)

计算 XPath 表达式,使用指定的 IXmlNamespaceResolver 解析命名空间前缀。

注解

尽管 XML XPath 语言 1.0 建议中未指定返回集合的顺序,但此扩展方法按文档顺序返回节点。

请注意,即使在使用反向轴(如 preceding-siblingancestor-or-self)时,也会按文档顺序返回节点。

XPathEvaluate(XNode, String)

计算 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

参数

node
XNode

一个 XNode,XPath 表达式将在其上计算。

expression
String

一个包含 XPath 表达式的 String

返回

Object

一个可以包含 booldoublestringIEnumerable<T> 的对象。

示例

以下示例使用属性创建一个小型 XML 树,然后使用 XPathEvaluate 该方法检索该属性。

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

该示例产生下面的输出:

a="value"  

注解

如果集合是元素或属性的枚举,则可以使用Cast运算符获取或XAttribute集合XElement

尽管 XML XPath 语言 1.0 建议中未指定返回集合的顺序,但此扩展方法按文档顺序返回节点。

请注意,即使在使用反向轴(如 preceding-siblingancestor-or-self)时,也会按文档顺序返回节点。

适用于

XPathEvaluate(XNode, String, IXmlNamespaceResolver)

计算 XPath 表达式,使用指定的 IXmlNamespaceResolver 解析命名空间前缀。

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

参数

node
XNode

一个 XNode,XPath 表达式将在其上计算。

expression
String

一个包含 XPath 表达式的 String

resolver
IXmlNamespaceResolver

一个用于解析 XPath 表达式中命名空间前缀的 IXmlNamespaceResolver

返回

Object

一个包含表达式计算结果的对象。 该对象可以为 booldoublestringIEnumerable<T>

示例

以下示例创建包含命名空间的 XML 树。 它使用 XmlReader 来读取 XML 文档。 然后获取 XmlNameTable 中的 XmlReaderXmlNamespaceManager 中的 XmlNameTable。 它在选择元素时使用 XmlNamespaceManager

                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)  

该示例产生下面的输出:

aw:Att="attdata"  

注解

可以使用此方法评估包含命名空间前缀的 XPath 表达式。

尽管 XML XPath 语言 1.0 建议中未指定返回集合的顺序,但此扩展方法按文档顺序返回节点。

请注意,即使在使用反向轴(如 preceding-siblingancestor-or-self)时,也会按文档顺序返回节点。

适用于