Extensions.XPathEvaluate メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
XPath 式を評価します。
オーバーロード
XPathEvaluate(XNode, String) |
XPath 式を評価します。 |
XPathEvaluate(XNode, String, IXmlNamespaceResolver) |
XPath 式を評価します。このとき、指定された IXmlNamespaceResolver を使用して名前空間プレフィックスを解決します。 |
注釈
返されるコレクションの順序は XML XPath Language 1.0 Recommendation では指定されていませんが、この拡張メソッドはドキュメントの順序でノードを返します。
や ancestor-or-self
などのpreceding-sibling
逆軸を使用した場合でも、ノードはドキュメントの順序で返されることに注意してください。
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
パラメーター
戻り値
bool
、double
、string
、または 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
使用して または XAttributeのXElementコレクションを取得できます。
返されるコレクションの順序は XML XPath Language 1.0 Recommendation では指定されていませんが、この拡張メソッドはドキュメントの順序でノードを返します。
や ancestor-or-self
などのpreceding-sibling
逆軸を使用した場合でも、ノードはドキュメントの順序で返されることに注意してください。
適用対象
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
パラメーター
- resolver
- IXmlNamespaceResolver
XPath 式の名前空間プレフィックスの解決に使用する IXmlNamespaceResolver。
戻り値
式の評価結果を含むオブジェクト。 このオブジェクトは、bool
、double
、string
、または 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 では指定されていませんが、この拡張メソッドはドキュメントの順序でノードを返します。
や ancestor-or-self
などのpreceding-sibling
逆軸を使用した場合でも、ノードはドキュメントの順序で返されることに注意してください。
適用対象
.NET