XmlNode.SelectNodes Metódus

Definíció

Kiválasztja az XPath-kifejezésnek megfelelő csomópontok listáját.

Túlterhelések

Name Description
SelectNodes(String)

Kiválasztja az XPath-kifejezésnek megfelelő csomópontok listáját.

SelectNodes(String, XmlNamespaceManager)

Kiválasztja az XPath-kifejezésnek megfelelő csomópontok listáját. Az XPath-kifejezésben található előtagok feloldása a megadott XmlNamespaceManagerparanccsel történik.

Megjegyzések

Az XPath-kifejezések tartalmazhatnak névtereket. A névtérfeloldás a XmlNamespaceManager. Ha az XPath-kifejezés tartalmaz egy előtagot, az előtagot és a névtér URI-párt hozzá kell adni a XmlNamespaceManager.

Note

Ha az XPath kifejezés nem tartalmaz előtagot, a névtér URI-ja az üres névtér. Ha az XML tartalmaz egy alapértelmezett névteret, akkor is hozzá kell adnia egy előtagot és egy névtér URI-t a XmlNamespaceManager; ellenkező esetben nem lesz kijelölve csomópont.

További információ: Csomópontok kiválasztása XPath-navigációval. Példakódok esetén válasszon túlterhelést az előző szakasz túlterhelési listájából.

SelectNodes(String)

Forrás:
XmlNode.cs
Forrás:
XmlNode.cs
Forrás:
XmlNode.cs
Forrás:
XmlNode.cs
Forrás:
XmlNode.cs

Kiválasztja az XPath-kifejezésnek megfelelő csomópontok listáját.

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

Paraméterek

xpath
String

Az XPath kifejezés.

Válaszok

Az XmlNodeList XPath-lekérdezésnek megfelelő csomópontok gyűjteménye.

Kivételek

Az XPath kifejezés tartalmaz egy előtagot. Lásd az XPath-példákat.

Példák

Az alábbi példa kiválasztja az összes könyvet, ahol a szerző vezetékneve Austen, majd módosítja a könyvek árát.

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

Ez a példa a következő XML-t használja:


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

Megjegyzések

Ha az XPath-kifejezés névtérfeloldást igényel, az SelectNodes argumentumként használt túlterhelést XmlNamespaceManager kell használnia. Ez XmlNamespaceManager a névterek feloldására szolgál.

Note

Ha az XPath kifejezés nem tartalmaz előtagot, a névtér URI-ja az üres névtér. Ha az XML tartalmaz egy alapértelmezett névteret, akkor is használnia kell az XmlNamespaceManager előtagot és a névtér URI-ját, ellenkező esetben nem lesz kijelölve csomópont. További információ: Csomópontok kiválasztása XPath-navigációval.

Note

Az XPath-kifejezések létrehozásakor gyakori probléma, hogy hogyan lehet egyetlen idézőjelet (') vagy dupla idézőjelet (") felvenni a kifejezésbe. Ha egyetlen idézőjelet tartalmazó értéket kell keresnie, a sztringet idézőjelek közé kell tenni. Ha kettős idézőjelet tartalmazó értéket kell keresnie, a sztringet egyetlen idézőjelbe kell helyeznie.

Tegyük fel például, hogy a következő XML-fájllal rendelkezik:

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

A következő Visual Basic kód kiválaszt egy elemet, amely egyetlen idézőjelet tartalmaz:

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

Ez a metódus a Dokumentumobjektum-modell (DOM) Microsoft bővítménye.

A XmlNodeList metódus által visszaadott objektum érvényes lesz, míg a mögöttes dokumentum változatlan marad. Ha a mögöttes dokumentum megváltozik, előfordulhat, hogy nem várt eredményeket ad vissza (kivétel nem lesz).

Lásd még

A következőre érvényes:

SelectNodes(String, XmlNamespaceManager)

Forrás:
XmlNode.cs
Forrás:
XmlNode.cs
Forrás:
XmlNode.cs
Forrás:
XmlNode.cs
Forrás:
XmlNode.cs

Kiválasztja az XPath-kifejezésnek megfelelő csomópontok listáját. Az XPath-kifejezésben található előtagok feloldása a megadott XmlNamespaceManagerparanccsel történik.

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

Paraméterek

xpath
String

Az XPath kifejezés. Lásd az XPath-példákat.

nsmgr
XmlNamespaceManager

Az XmlNamespaceManager XPath-kifejezés előtagjainak névtereinek feloldására használható.

Válaszok

Az XmlNodeList XPath-lekérdezésnek megfelelő csomópontok gyűjteménye.

Kivételek

Az XPath kifejezés olyan előtagot tartalmaz, amely nincs definiálva a XmlNamespaceManager.

Példák

Az alábbi példa az ISBN-attribútumok értékeit mutatja be. Ez a példa egy objektumot XmlElement használ, amely az XmlNode osztálytól öröklődik.

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

A példa a fájlt booksort.xmlhasználja bemenetként.


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

Megjegyzések

Az XPath-kifejezések tartalmazhatnak névtereket. A névtérfeloldás a XmlNamespaceManager. Ha az XPath-kifejezés tartalmaz egy előtagot, az előtagot és a névtér URI-párt hozzá kell adni a XmlNamespaceManager.

Note

Ha az XPath kifejezés nem tartalmaz előtagot, a névtér URI-ja az üres névtér. Ha az XML tartalmaz egy alapértelmezett névteret, akkor is hozzá kell adnia egy előtagot és egy névtér URI-t a XmlNamespaceManager; ellenkező esetben nem lesz kijelölve csomópont. További információ: Csomópontok kiválasztása XPath-navigációval.

Ha például a következő XML-fájllal rendelkezett:

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

A következő C#-kód az összes könyvcsomópontot kiválasztja:

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

Note

Az XPath-kifejezések létrehozásakor gyakori probléma, hogy hogyan lehet egyetlen idézőjelet (') vagy dupla idézőjelet (") felvenni a kifejezésbe. Ha egyetlen idézőjelet tartalmazó értéket kell keresnie, a sztringet idézőjelek közé kell tenni. Ha kettős idézőjelet tartalmazó értéket kell keresnie, a sztringet egyetlen idézőjelbe kell helyeznie.

Tegyük fel például, hogy a következő XML-fájllal rendelkezik:

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

A következő Visual Basic kód kiválaszt egy elemet, amely egyetlen idézőjelet tartalmaz:

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)

Ez a metódus a Dokumentumobjektum-modell (DOM) Microsoft bővítménye.

A XmlNodeList metódus által visszaadott objektum érvényes lesz, míg a mögöttes dokumentum változatlan marad. Ha a mögöttes dokumentum megváltozik, előfordulhat, hogy nem várt eredményeket ad vissza (kivétel nem lesz).

Lásd még

A következőre érvényes: