XmlNode.SelectNodes メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
XPath 式に一致するノードの一覧を選択します。
オーバーロード
| 名前 | 説明 |
|---|---|
| SelectNodes(String) |
XPath 式に一致するノードの一覧を選択します。 |
| SelectNodes(String, XmlNamespaceManager) |
XPath 式に一致するノードの一覧を選択します。 XPath 式で見つかったプレフィックスはすべて、指定された XmlNamespaceManagerを使用して解決されます。 |
注釈
XPath 式には名前空間を含めることができます。 名前空間の解決は、 XmlNamespaceManagerを使用してサポートされます。 XPath 式にプレフィックスが含まれている場合は、プレフィックスと名前空間 URI のペアを XmlNamespaceManagerに追加する必要があります。
注
XPath 式にプレフィックスが含まれていない場合は、名前空間 URI が空の名前空間であると見なされます。 XML に既定の名前空間が含まれている場合でも、プレフィックスと名前空間 URI を XmlNamespaceManagerに追加する必要があります。それ以外の場合は、ノードは選択されません。
詳細については、「 XPath ナビゲーションを使用したノードの選択」を参照してください。 コード例では、前のセクションのオーバーロード リストからオーバーロードを選択します。
SelectNodes(String)
- ソース:
- XmlNode.cs
- ソース:
- XmlNode.cs
- ソース:
- XmlNode.cs
- ソース:
- XmlNode.cs
- ソース:
- XmlNode.cs
XPath 式に一致するノードの一覧を選択します。
public:
System::Xml::XmlNodeList ^ SelectNodes(System::String ^ xpath);
public System.Xml.XmlNodeList? SelectNodes(string xpath);
public System.Xml.XmlNodeList SelectNodes(string xpath);
member this.SelectNodes : string -> System.Xml.XmlNodeList
Public Function SelectNodes (xpath As String) As XmlNodeList
パラメーター
- xpath
- String
XPath 式。
返品
XPath クエリに一致するノードのコレクションを含む XmlNodeList 。
例外
XPath 式にはプレフィックスが含まれています。
例
次の使用例は、著者の姓がオーステンであるすべての書籍を選択し、それらの書籍の価格を変更します。
using System;
using System.Xml;
public class Sample6
{
public static void Main()
{
XmlDocument doc = new XmlDocument();
doc.Load("booksort.xml");
XmlNodeList nodeList;
XmlNode root = doc.DocumentElement;
nodeList = root.SelectNodes("descendant::book[author/last-name='Austen']");
//Change the price on the books.
foreach (XmlNode book in nodeList)
{
book.LastChild.InnerText = "15.95";
}
Console.WriteLine("Display the modified XML document....");
doc.Save(Console.Out);
}
}
Imports System.IO
Imports System.Xml
public class Sample
public shared sub Main()
'Create the XmlDocument.
Dim doc as XmlDocument = new XmlDocument()
doc.Load("booksort.xml")
Dim book as XmlNode
Dim nodeList as XmlNodeList
Dim root as XmlNode = doc.DocumentElement
nodeList=root.SelectNodes("descendant::book[author/last-name='Austen']")
'Change the price on the books.
for each book in nodeList
book.LastChild.InnerText="15.95"
next
Console.WriteLine("Display the modified XML document....")
doc.Save(Console.Out)
end sub
end class
この例では、次の 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>
注釈
XPath 式で名前空間の解決が必要な場合は、XmlNamespaceManagerを引数として受け取るSelectNodesオーバーロードを使用する必要があります。
XmlNamespaceManagerは名前空間の解決に使用されます。
注
XPath 式にプレフィックスが含まれていない場合は、名前空間 URI が空の名前空間であると見なされます。 XML に既定の名前空間が含まれている場合でも、 XmlNamespaceManager を使用し、プレフィックスと名前空間 URI を追加する必要があります。それ以外の場合は、ノードは選択されません。 詳細については、「 XPath ナビゲーションを使用したノードの選択」を参照してください。
注
XPath 式を作成するときの一般的な問題は、式に単一引用符 (') または二重引用符 (") を含める方法です。 単一引用符を含む値を検索する必要がある場合は、文字列を二重引用符で囲む必要があります。 二重引用符を含む値を検索する必要がある場合は、文字列を一重引用符で囲む必要があります。
たとえば、次のような XML コードがあるとします:
<bookstore>
<book>
<title>'Emma'</title>
</book>
</bookstore>
次のVisual Basicコードは、単一引用符を含む要素を選択します。
nodeList = root.SelectNodes("//book[contains(title,""'Emma'"")]")
このメソッドは、ドキュメント オブジェクト モデル (DOM) のMicrosoft拡張機能です。
このメソッドによって返される XmlNodeList オブジェクトは有効ですが、基になるドキュメントは変更されません。 基になるドキュメントが変更されると、予期しない結果が返される可能性があります (例外はスローされません)。
こちらもご覧ください
適用対象
SelectNodes(String, XmlNamespaceManager)
- ソース:
- XmlNode.cs
- ソース:
- XmlNode.cs
- ソース:
- XmlNode.cs
- ソース:
- XmlNode.cs
- ソース:
- XmlNode.cs
XPath 式に一致するノードの一覧を選択します。 XPath 式で見つかったプレフィックスはすべて、指定された XmlNamespaceManagerを使用して解決されます。
public:
System::Xml::XmlNodeList ^ SelectNodes(System::String ^ xpath, System::Xml::XmlNamespaceManager ^ nsmgr);
public System.Xml.XmlNodeList? SelectNodes(string xpath, System.Xml.XmlNamespaceManager nsmgr);
public System.Xml.XmlNodeList SelectNodes(string xpath, System.Xml.XmlNamespaceManager nsmgr);
member this.SelectNodes : string * System.Xml.XmlNamespaceManager -> System.Xml.XmlNodeList
Public Function SelectNodes (xpath As String, nsmgr As XmlNamespaceManager) As XmlNodeList
パラメーター
- xpath
- String
XPath 式。
- nsmgr
- XmlNamespaceManager
XPath 式のプレフィックスの名前空間を解決するために使用する XmlNamespaceManager 。
返品
XPath クエリに一致するノードのコレクションを含む XmlNodeList 。
例外
XPath 式には、 XmlNamespaceManagerで定義されていないプレフィックスが含まれています。
例
次の例では、各 ISBN 属性の値を表示します。 この例では、XmlNode クラスから継承するXmlElement オブジェクトを使用します。
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 and display the value of all the ISBN attributes.
XmlNodeList nodeList;
XmlElement root = doc.DocumentElement;
nodeList = root.SelectNodes("/bookstore/book/@bk:ISBN", nsmgr);
foreach (XmlNode isbn in nodeList){
Console.WriteLine(isbn.Value);
}
}
}
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 and display the value of all the ISBN attributes.
Dim nodeList as XmlNodeList
Dim root as XmlElement = doc.DocumentElement
nodeList = root.SelectNodes("/bookstore/book/@bk:ISBN", nsmgr)
Dim isbn as XmlNode
for each isbn in nodeList
Console.WriteLine(isbn.Value)
next
end sub
end class
この例では、 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>
注釈
XPath 式には名前空間を含めることができます。 名前空間の解決は、 XmlNamespaceManagerを使用してサポートされます。 XPath 式にプレフィックスが含まれている場合は、プレフィックスと名前空間 URI のペアを XmlNamespaceManagerに追加する必要があります。
注
XPath 式にプレフィックスが含まれていない場合は、名前空間 URI が空の名前空間であると見なされます。 XML に既定の名前空間が含まれている場合でも、プレフィックスと名前空間 URI を XmlNamespaceManagerに追加する必要があります。それ以外の場合は、ノードは選択されません。 詳細については、「 XPath ナビゲーションを使用したノードの選択」を参照してください。
たとえば、次の XML があるとします。
<bookstore xmlns="http://www.lucernepublishing.com">
<book>
<title>Pride And Prejudice</title>
</book>
</bookstore>
次の C# コードでは、すべての書籍ノードが選択されます。
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("ab", "http://www.lucernepublishing.com");
XmlNodeList nodelist = doc.SelectNodes("//ab:book", nsmgr);
注
XPath 式を作成するときの一般的な問題は、式に単一引用符 (') または二重引用符 (") を含める方法です。 単一引用符を含む値を検索する必要がある場合は、文字列を二重引用符で囲む必要があります。 二重引用符を含む値を検索する必要がある場合は、文字列を一重引用符で囲む必要があります。
たとえば、次のような XML コードがあるとします:
<bookstore xmlns="http://www.lucernepublishing.com">
<book>
<title>'Emma'</title>
</book>
</bookstore>
次のVisual Basicコードは、単一引用符を含む要素を選択します。
Dim nsmgr As XmlNamespaceManager = New XmlNamespaceManager(doc.NameTable)
nsmgr.AddNamespace("ab", "http://www.lucernepublishing.com")
nodeList = root.SelectNodes("//ab:book[contains(ab:title,""'Emma'"")]", nsmgr)
このメソッドは、ドキュメント オブジェクト モデル (DOM) のMicrosoft拡張機能です。
このメソッドによって返される XmlNodeList オブジェクトは有効ですが、基になるドキュメントは変更されません。 基になるドキュメントが変更されると、予期しない結果が返される可能性があります (例外はスローされません)。