次の方法で共有


XmlNode.SelectNodes メソッド (String, XmlNamespaceManager)

XPath 式と一致するノードのリストを選択します。XPath 式で見つかったプリフィックスは、指定した XmlNamespaceManager を使用して解決されます。

Overloads Public Function SelectNodes( _
   ByVal xpath As String, _   ByVal nsmgr As XmlNamespaceManager _) As XmlNodeList
[C#]
public XmlNodeList SelectNodes(stringxpath,XmlNamespaceManagernsmgr);
[C++]
public: XmlNodeList* SelectNodes(String* xpath,XmlNamespaceManager* nsmgr);
[JScript]
public function SelectNodes(
   xpath : String,nsmgr : XmlNamespaceManager) : XmlNodeList;

パラメータ

  • xpath
    XPath 式。
  • nsmgr
    XPath 式のプリフィックスの名前空間を解決するために使用する XmlNamespaceManager

戻り値

XPath クエリと一致するノードのコレクションを格納している XmlNodeList

例外

例外の種類 条件
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");
XmlNodeList nodelist = doc.SelectNodes("//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 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

[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 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);
      }

   }

}

[C++] 
#using <mscorlib.dll>
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;
using namespace System::Collections;

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 and display the value of all the ISBN attributes.
   XmlNodeList * nodeList;
   XmlElement * root = doc -> DocumentElement;
   nodeList = root -> SelectNodes(S"/bookstore/book/@bk:ISBN", nsmgr);
   IEnumerator* myEnum = nodeList->GetEnumerator();
   while (myEnum->MoveNext())
   {
      XmlNode* isbn = __try_cast<XmlNode*>(myEnum->Current);
      Console::WriteLine(isbn -> Value);
   }
}

この例では、入力として、 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.SelectNodes オーバーロードの一覧