Bagikan melalui


XmlNode.SelectNodes Metode

Definisi

Memilih daftar simpul yang cocok dengan ekspresi JalurX.

Overload

SelectNodes(String)

Memilih daftar simpul yang cocok dengan ekspresi JalurX.

SelectNodes(String, XmlNamespaceManager)

Memilih daftar simpul yang cocok dengan ekspresi JalurX. Setiap prefiks yang ditemukan dalam ekspresi JalurX diselesaikan menggunakan yang disediakan XmlNamespaceManager.

Keterangan

Ekspresi JalurX dapat menyertakan namespace layanan. Resolusi namespace layanan didukung menggunakan XmlNamespaceManager. Jika ekspresi JalurX menyertakan awalan, pasangan awalan dan URI namespace harus ditambahkan ke XmlNamespaceManager.

Catatan

Jika ekspresi JalurX tidak menyertakan awalan, diasumsikan bahwa URI namespace adalah namespace kosong. Jika XML Anda menyertakan namespace default, Anda masih harus menambahkan awalan dan URI namespace ke XmlNamespaceManager; jika tidak, Anda tidak akan memilih simpul apa pun.

Untuk informasi selengkapnya, lihat Memilih Simpul Menggunakan Navigasi JalurX. Untuk contoh kode, pilih kelebihan beban dari daftar kelebihan beban di bagian sebelumnya.

SelectNodes(String)

Sumber:
XmlNode.cs
Sumber:
XmlNode.cs
Sumber:
XmlNode.cs

Memilih daftar simpul yang cocok dengan ekspresi JalurX.

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

Parameter

xpath
String

Ekspresi JalurX.

Mengembalikan

Berisi XmlNodeList kumpulan simpul yang cocok dengan kueri JalurX.

Pengecualian

Ekspresi JalurX berisi awalan. Lihat Contoh JalurX.

Contoh

Contoh berikut memilih semua buku di mana nama belakang penulis adalah Austen, lalu mengubah harga buku-buku tersebut.

#using <System.Xml.dll>

using namespace System;
using namespace System::IO;
using namespace System::Xml;
int main()
{
   XmlDocument^ doc = gcnew 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.
   System::Collections::IEnumerator^ myEnum = nodeList->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      XmlNode^ book = safe_cast<XmlNode^>(myEnum->Current);
      book->LastChild->InnerText = "15.95";
   }

   Console::WriteLine( "Display the modified XML document...." );
   doc->Save( Console::Out );
}
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

Contoh ini menggunakan XML berikut:


<?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>

Keterangan

Jika ekspresi JalurX memerlukan resolusi namespace, Anda harus menggunakan SelectNodes kelebihan beban yang mengambil XmlNamespaceManager sebagai argumennya. XmlNamespaceManager digunakan untuk mengatasi namespace layanan.

Catatan

Jika ekspresi JalurX tidak menyertakan awalan, diasumsikan bahwa URI namespace adalah namespace kosong. Jika XML Anda menyertakan namespace default, Anda masih harus menggunakan XmlNamespaceManager dan menambahkan awalan dan namespace URI ke dalamnya; jika tidak, Anda tidak akan memilih simpul apa pun. Untuk informasi selengkapnya, lihat Memilih Simpul Menggunakan Navigasi JalurX.

Catatan

Masalah umum saat merumuskan ekspresi JalurX adalah cara menyertakan tanda kutip tunggal (') atau tanda kutip ganda (") dalam ekspresi. Jika Anda harus mencari nilai yang menyertakan satu kutipan, Anda harus mengapit string dalam tanda kutip ganda. Jika Anda perlu mencari nilai yang menyertakan tanda kutip ganda, Anda harus mengapit string dalam tanda kutip tunggal.

Misalnya, Anda memiliki XML berikut:

<bookstore>
  <book>
    <title>&apos;Emma&apos;</title>
  </book>
</bookstore>

Kode Visual Basic berikut memilih elemen yang berisi tanda kutip tunggal:

nodeList = root.SelectNodes("//book[contains(title,""'Emma'"")]")

Metode ini adalah ekstensi Microsoft untuk Model Objek Dokumen (DOM).

Objek XmlNodeList yang dikembalikan oleh metode ini akan valid sementara dokumen yang mendasar tetap tidak berubah. Jika dokumen yang mendasar berubah, hasil yang tidak terduga dapat dikembalikan (tidak ada pengecualian yang akan dilemparkan).

Lihat juga

Berlaku untuk

SelectNodes(String, XmlNamespaceManager)

Sumber:
XmlNode.cs
Sumber:
XmlNode.cs
Sumber:
XmlNode.cs

Memilih daftar simpul yang cocok dengan ekspresi JalurX. Setiap prefiks yang ditemukan dalam ekspresi JalurX diselesaikan menggunakan yang disediakan 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

Parameter

xpath
String

Ekspresi JalurX. Lihat Contoh JalurX.

nsmgr
XmlNamespaceManager

Yang XmlNamespaceManager digunakan untuk mengatasi namespace layanan untuk awalan dalam ekspresi JalurX.

Mengembalikan

Berisi XmlNodeList kumpulan simpul yang cocok dengan kueri JalurX.

Pengecualian

Ekspresi JalurX berisi awalan yang tidak ditentukan dalam XmlNamespaceManager.

Contoh

Contoh berikut menampilkan nilai masing-masing atribut ISBN. Contoh ini menggunakan XmlElement objek , yang mewarisi dari XmlNode kelas .

#using <System.Xml.dll>

using namespace System;
using namespace System::IO;
using namespace System::Xml;
using namespace System::Collections;
int main()
{
   XmlDocument^ doc = gcnew XmlDocument;
   doc->Load( "booksort.xml" );
   
   // Create an XmlNamespaceManager for resolving namespaces.
   XmlNamespaceManager^ nsmgr = gcnew 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 );
   IEnumerator^ myEnum = nodeList->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      XmlNode^ isbn = safe_cast<XmlNode^>(myEnum->Current);
      Console::WriteLine( isbn->Value );
   }
}
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

Contohnya menggunakan file , booksort.xml, sebagai input.


<?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>

Keterangan

Ekspresi JalurX dapat menyertakan namespace layanan. Resolusi namespace layanan didukung menggunakan XmlNamespaceManager. Jika ekspresi JalurX menyertakan awalan, pasangan awalan dan URI namespace harus ditambahkan ke XmlNamespaceManager.

Catatan

Jika ekspresi JalurX tidak menyertakan awalan, diasumsikan bahwa URI namespace adalah namespace kosong. Jika XML Anda menyertakan namespace default, Anda masih harus menambahkan awalan dan URI namespace ke XmlNamespaceManager; jika tidak, Anda tidak akan memilih simpul apa pun. Untuk informasi selengkapnya, lihat Memilih Simpul Menggunakan Navigasi JalurX.

Misalnya, jika Anda memiliki XML berikut:

<bookstore xmlns="http://www.lucernepublishing.com">
 <book>
   <title>Pride And Prejudice</title>
 </book>
</bookstore>

Kode C# berikut memilih semua simpul buku:

XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("ab", "http://www.lucernepublishing.com");
XmlNodeList nodelist = doc.SelectNodes("//ab:book", nsmgr);

Catatan

Masalah umum saat merumuskan ekspresi JalurX adalah cara menyertakan tanda kutip tunggal (') atau tanda kutip ganda (") dalam ekspresi. Jika Anda harus mencari nilai yang menyertakan satu kutipan, Anda harus mengapit string dalam tanda kutip ganda. Jika Anda perlu mencari nilai yang menyertakan tanda kutip ganda, Anda harus mengapit string dalam tanda kutip tunggal.

Misalnya, Anda memiliki XML berikut:

<bookstore xmlns="http://www.lucernepublishing.com">
  <book>
    <title>&apos;Emma&apos;</title>
  </book>
</bookstore>

Kode Visual Basic berikut memilih elemen yang berisi tanda kutip tunggal:

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)

Metode ini adalah ekstensi Microsoft untuk Model Objek Dokumen (DOM).

Objek XmlNodeList yang dikembalikan oleh metode ini akan valid sementara dokumen yang mendasar tetap tidak berubah. Jika dokumen yang mendasar berubah, hasil yang tidak terduga dapat dikembalikan (tidak ada pengecualian yang akan dilemparkan).

Lihat juga

Berlaku untuk