Extensions.XPathEvaluate メソッド

定義

XPath 式を評価します。

オーバーロード

名前 説明
XPathEvaluate(XNode, String)

XPath 式を評価します。

XPathEvaluate(XNode, String, IXmlNamespaceResolver)

指定した IXmlNamespaceResolverを使用して名前空間プレフィックスを解決して、XPath 式を評価します。

注釈

返されるコレクションの順序は XML XPath Language 1.0 Recommendation では指定されていませんが、この拡張メソッドはドキュメントの順序でノードを返します。

preceding-siblingancestor-or-selfなど、逆軸を使用する場合でも、ノードはドキュメントの順序で返されることに注意してください。

XPathEvaluate(XNode, String)

ソース:
XNodeNavigator.cs
ソース:
XNodeNavigator.cs
ソース:
XNodeNavigator.cs
ソース:
XNodeNavigator.cs
ソース:
XNodeNavigator.cs

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

XPath 式を評価する XNode

expression
String

XPath 式を含む String

返品

booldoublestring、またはIEnumerable<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 演算子を使用して、 XElement または XAttributeのコレクションを取得できます。

返されるコレクションの順序は XML XPath Language 1.0 Recommendation では指定されていませんが、この拡張メソッドはドキュメントの順序でノードを返します。

preceding-siblingancestor-or-selfなど、逆軸を使用する場合でも、ノードはドキュメントの順序で返されることに注意してください。

適用対象

XPathEvaluate(XNode, String, IXmlNamespaceResolver)

ソース:
XNodeNavigator.cs
ソース:
XNodeNavigator.cs
ソース:
XNodeNavigator.cs
ソース:
XNodeNavigator.cs
ソース:
XNodeNavigator.cs

指定した IXmlNamespaceResolverを使用して名前空間プレフィックスを解決して、XPath 式を評価します。

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

XPath 式を評価する XNode

expression
String

XPath 式を含む String

resolver
IXmlNamespaceResolver

XPath 式の名前空間プレフィックスの IXmlNamespaceResolver

返品

式を評価した結果を含むオブジェクト。 オブジェクトには、 booldoublestring、または IEnumerable<T>を指定できます。

次の例では、名前空間を含む XML ツリーを作成します。 XmlReaderを使用して XML ドキュメントを読み取ります。 その後、XmlNameTableからXmlReaderを取得し、XmlNamespaceManagerから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 Language 1.0 Recommendation では指定されていませんが、この拡張メソッドはドキュメントの順序でノードを返します。

preceding-siblingancestor-or-selfなど、逆軸を使用する場合でも、ノードはドキュメントの順序で返されることに注意してください。

適用対象