XPath 式と一致する最初の XmlNode を選択します。XPath 式で見つかったプリフィックスは、指定した XmlNamespaceManager を使用して解決されます。
Overloads Public Function SelectSingleNode( _
ByVal xpath As String, _ ByVal nsmgr As XmlNamespaceManager _) As XmlNode
[C#]
public XmlNode SelectSingleNode(stringxpath,XmlNamespaceManagernsmgr);
[C++]
public: XmlNode* SelectSingleNode(String* xpath,XmlNamespaceManager* nsmgr);
[JScript]
public function SelectSingleNode(
xpath : String,nsmgr : XmlNamespaceManager) : XmlNode;
パラメータ
- xpath
XPath 式。 - nsmgr
XPath 式のプリフィックスの名前空間を解決するために使用する XmlNamespaceManager 。
戻り値
XPath クエリと一致する最初の XmlNode 。一致するノードが見つからない場合は null 参照 (Visual Basic では Nothing) 。
例外
| 例外の種類 | 条件 |
|---|---|
| XPathException | XPath 式に、 XmlNamespaceManager で定義されていないプリフィックスが含まれています。 |
解説
XPath 式には、名前空間が含まれる場合があります。名前空間の解決は、 XmlNamespaceManager を使用してサポートされます。XPath 式にプリフィックスが含まれている場合は、プリフィックスと名前空間 URI のペアを XmlNamespaceManager に追加する必要があります。
メモ XPath 式にプリフィックスが含まれていない場合、名前空間 URI は、空の名前空間であると見なされます。XML に既定の名前空間が含まれている場合でも、 XmlNamespaceManager にプリフィックスと名前空間 URI を追加する必要があります。そうしないと、ノードを選択できません。
たとえば、次の XML がある場合を示します。
<bookstore xmlns="http://www.lucernepublishing.com">
<book>
<title>Pride And Prejudice</title>
</book>
</bookstore>
最初の book ノードを選択する C# コードを次に示します。
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("ab", "http://www.lucernepublishing.com");
XmlNode book = doc.SelectSingleNode("//ab:book", nsmgr);
このメソッドは、ドキュメント オブジェクト モデル (DOM: Document Object Model) に対する Microsoft 拡張機能です。
使用例
[Visual Basic, C#, C++] 一致する ISBN 値を持つ本を選択する例を次に示します。
Imports System
Imports System.IO
Imports System.Xml
public class Sample
public shared sub Main()
Dim doc as XmlDocument = new XmlDocument()
doc.Load("booksort.xml")
'Create an XmlNamespaceManager for resolving namespaces.
Dim nsmgr as XmlNamespaceManager = new XmlNamespaceManager(doc.NameTable)
nsmgr.AddNamespace("bk", "urn:samples")
'Select the book node with the matching attribute value.
Dim book as XmlNode
Dim root as XmlElement = doc.DocumentElement
book = root.SelectSingleNode("descendant::book[@bk:ISBN='1-861001-57-6']", nsmgr)
Console.WriteLine(book.OuterXml)
end sub
end class
[C#]
using System;
using System.IO;
using System.Xml;
public class Sample
{
public static void Main()
{
XmlDocument doc = new XmlDocument();
doc.Load("booksort.xml");
//Create an XmlNamespaceManager for resolving namespaces.
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("bk", "urn:samples");
//Select the book node with the matching attribute value.
XmlNode book;
XmlElement root = doc.DocumentElement;
book = root.SelectSingleNode("descendant::book[@bk:ISBN='1-861001-57-6']", nsmgr);
Console.WriteLine(book.OuterXml);
}
}
[C++]
#using <mscorlib.dll>
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;
int main() {
XmlDocument* doc = new XmlDocument();
doc -> Load(S"booksort.xml");
//Create an XmlNamespaceManager for resolving namespaces.
XmlNamespaceManager* nsmgr = new XmlNamespaceManager(doc -> NameTable);
nsmgr -> AddNamespace(S"bk", S"urn:samples");
//Select the book node with the matching attribute value.
XmlNode * book;
XmlElement * root = doc -> DocumentElement;
book = root -> SelectSingleNode(S"descendant::book->Item[@bk:ISBN='1-861001-57-6']", nsmgr);
Console::WriteLine(book -> OuterXml);
}
この例では、入力として、 booksort.xml というファイルを使用しています。
<?xml version="1.0"?>
<!-- A fragment of a book store inventory database -->
<bookstore xmlns:bk="urn:samples">
<book genre="novel" publicationdate="1997" bk:ISBN="1-861001-57-8">
<title>Pride And Prejudice</title>
<author>
<first-name>Jane</first-name>
<last-name>Austen</last-name>
</author>
<price>24.95</price>
</book>
<book genre="novel" publicationdate="1992" bk:ISBN="1-861002-30-1">
<title>The Handmaid's Tale</title>
<author>
<first-name>Margaret</first-name>
<last-name>Atwood</last-name>
</author>
<price>29.95</price>
</book>
<book genre="novel" publicationdate="1991" bk:ISBN="1-861001-57-6">
<title>Emma</title>
<author>
<first-name>Jane</first-name>
<last-name>Austen</last-name>
</author>
<price>19.95</price>
</book>
<book genre="novel" publicationdate="1982" bk:ISBN="1-861001-45-3">
<title>Sense and Sensibility</title>
<author>
<first-name>Jane</first-name>
<last-name>Austen</last-name>
</author>
<price>19.95</price>
</book>
</bookstore>
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン
をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
参照
XmlNode クラス | XmlNode メンバ | System.Xml 名前空間 | XmlNode.SelectSingleNode オーバーロードの一覧