İngilizce dilinde oku

Aracılığıyla paylaş


XmlNode.SelectSingleNode Yöntem

Tanım

XPath ifadesiyle eşleşen ilki XmlNode seçer.

Aşırı Yüklemeler

SelectSingleNode(String)

XPath ifadesiyle eşleşen ilki XmlNode seçer.

SelectSingleNode(String, XmlNamespaceManager)

XPath ifadesiyle eşleşen ilki XmlNode seçer. XPath ifadesinde bulunan tüm ön ekler sağlanan XmlNamespaceManagerkullanılarak çözümlenir.

Örnekler

Aşağıdaki örnek, eşleşen yazar adına sahip ilk kitabı döndürür. , XmlNamespaceManager XPath ifadesindeki varsayılan ad alanını çözümler.

C#
using System;
using System.IO;
using System.Xml;

public class Sample
{
  public static void Main()
  {

      XmlDocument doc = new XmlDocument();
      doc.Load("newbooks.xml");

      // Create an XmlNamespaceManager to resolve the default namespace.
      XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
      nsmgr.AddNamespace("bk", "urn:newbooks-schema");

      // Select the first book written by an author whose last name is Atwood.
      XmlNode book;
      XmlElement root = doc.DocumentElement;
     book = root.SelectSingleNode("descendant::bk:book[bk:author/bk:last-name='Atwood']", nsmgr);

      Console.WriteLine(book.OuterXml);
  }
}

Örnekte giriş olarak dosyası newbooks.xmlkullanılır.

XML
<?xml version='1.0'?>
<bookstore xmlns="urn:newbooks-schema">
  <book genre="novel" style="hardcover">
    <title>The Handmaid's Tale</title>
    <author>
      <first-name>Margaret</first-name>
      <last-name>Atwood</last-name>
    </author>
    <price>19.95</price>
  </book>
  <book genre="novel" style="other">
    <title>The Poisonwood Bible</title>
    <author>
      <first-name>Barbara</first-name>
      <last-name>Kingsolver</last-name>
    </author>
    <price>11.99</price>
  </book>
</bookstore>

Açıklamalar

XPath ifadeleri ad alanlarını içerebilir. Ad alanı çözümlemesi kullanılarak XmlNamespaceManagerdesteklenir. XPath ifadesi bir ön ek içeriyorsa, ön ek ve ad alanı URI çiftinin XmlNamespaceManageröğesine eklenmesi gerekir.

Not

XPath ifadesi bir ön ek içermiyorsa, ad alanı URI'sinin boş ad alanı olduğu varsayılır. XML'niz varsayılan bir ad alanı içeriyorsa, öğesine yine de bir ön ek ve ad alanı URI'sini XmlNamespaceManagereklemeniz gerekir; aksi takdirde hiçbir düğüm seçilmez. Daha fazla bilgi için bkz. XPath Gezintisini Kullanarak Düğüm Seçme.

SelectSingleNode(String)

Kaynak:
XmlNode.cs
Kaynak:
XmlNode.cs
Kaynak:
XmlNode.cs

XPath ifadesiyle eşleşen ilki XmlNode seçer.

C#
public System.Xml.XmlNode? SelectSingleNode (string xpath);
C#
public System.Xml.XmlNode SelectSingleNode (string xpath);

Parametreler

xpath
String

XPath ifadesi. Bkz. XPath Örnekleri.

Döndürülenler

XmlNode XPath sorgusuyla eşleşen ilk sorgu veya null eşleşen düğüm bulunamaz.

Özel durumlar

XPath ifadesi bir ön ek içerir.

Örnekler

Aşağıdaki örnek, ilk Jane Austen kitabının fiyatını değiştirir.

C#
using System;
using System.IO;
using System.Xml;

public class Sample {

  public static void Main() {

    XmlDocument doc = new XmlDocument();
    doc.Load("booksort.xml");

    XmlNode book;
    XmlNode root = doc.DocumentElement;

    book=root.SelectSingleNode("descendant::book[author/last-name='Austen']");

    //Change the price on the book.
    book.LastChild.InnerText="15.95";

    Console.WriteLine("Display the modified XML document....");
    doc.Save(Console.Out);
  }
}

Örnekte giriş olarak dosyası booksort.xmlkullanılır.

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>

Açıklamalar

XPath ifadesi ad alanı çözümlemesi gerektiriyorsa, bağımsız değişkeni olarak bir XmlNamespaceManager alan aşırı yüklemeyi kullanmanız SelectSingleNode gerekir. XmlNamespaceManager ad alanlarını çözümlemek için kullanılır.

Not

XPath ifadesi bir ön ek içermiyorsa, ad alanı URI'sinin boş ad alanı olduğu varsayılır. XML'niz varsayılan bir ad alanı içeriyorsa, yine de öğesini kullanmanız XmlNamespaceManager ve buna bir ön ek ve ad alanı URI'sini eklemeniz gerekir; aksi takdirde seçili bir düğümü alamazsınız. Daha fazla bilgi için bkz. XPath Gezintisini Kullanarak Düğüm Seçme.

Not

XPath ifadelerini formüle ederken sık karşılaşılan bir sorun, ifadeye tek tırnak (') veya çift tırnak (") eklenmesidir. Tek tırnak içeren bir değeri aramanız gerekiyorsa, dizeyi çift tırnak içine almanız gerekir. Çift tırnak içeren bir değeri aramanız gerekiyorsa, dizeyi tek tırnak içine almanız gerekir.

Örneğin, aşağıdaki XML'e sahip olduğunuzu varsayalım:

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

Aşağıdaki Visual Basic kodu, tek tırnak işareti içeren bir öğeyi seçer:

book = root.SelectSingleNode("descendant::book[title=""'Emma'""]")

Bu yöntem, Belge Nesne Modeli'nin (DOM) Bir Microsoft uzantısıdır.

Ayrıca bkz.

Şunlara uygulanır

.NET 9 ve diğer sürümler
Ürün Sürümler
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

SelectSingleNode(String, XmlNamespaceManager)

Kaynak:
XmlNode.cs
Kaynak:
XmlNode.cs
Kaynak:
XmlNode.cs

XPath ifadesiyle eşleşen ilki XmlNode seçer. XPath ifadesinde bulunan tüm ön ekler sağlanan XmlNamespaceManagerkullanılarak çözümlenir.

C#
public System.Xml.XmlNode? SelectSingleNode (string xpath, System.Xml.XmlNamespaceManager nsmgr);
C#
public System.Xml.XmlNode SelectSingleNode (string xpath, System.Xml.XmlNamespaceManager nsmgr);

Parametreler

xpath
String

XPath ifadesi. Bkz. XPath Örnekleri.

nsmgr
XmlNamespaceManager

XmlNamespaceManager XPath ifadesindeki ön eklerin ad alanlarını çözümlemek için kullanılacak.

Döndürülenler

XmlNode XPath sorgusuyla eşleşen ilk sorgu veya null eşleşen düğüm bulunamaz.

Özel durumlar

XPath ifadesi içinde XmlNamespaceManagertanımlanmayan bir ön ek içerir.

Örnekler

Aşağıdaki örnek, eşleşen ISBN değerine sahip kitabı seçer.

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

Örnekte giriş olarak dosyası booksort.xmlkullanılır.

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>

Açıklamalar

XPath ifadeleri ad alanlarını içerebilir. Ad alanı çözümlemesi kullanılarak XmlNamespaceManagerdesteklenir. XPath ifadesi bir ön ek içeriyorsa, ön ek ve ad alanı URI çiftinin XmlNamespaceManageröğesine eklenmesi gerekir.

Not

XPath ifadesi bir ön ek içermiyorsa, ad alanı URI'sinin boş ad alanı olduğu varsayılır. XML'niz varsayılan bir ad alanı içeriyorsa, öğesine yine de bir ön ek ve ad alanı URI'sini XmlNamespaceManagereklemeniz gerekir; aksi takdirde bir düğüm seçilmez. Daha fazla bilgi için bkz. XPath Gezintisini Kullanarak Düğüm Seçme.

Örneğin, aşağıdaki XML'e sahipseniz:

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

Aşağıdaki C# kodu ilk kitap düğümünü seçer:

C#
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("ab", "http://www.lucernepublishing.com");
XmlNode book = doc.SelectSingleNode("//ab:book", nsmgr);

Not

XPath ifadelerini formüle ederken sık karşılaşılan bir sorun, ifadeye tek tırnak (') veya çift tırnak (") eklenmesidir. Tek tırnak içeren bir değeri aramanız gerekiyorsa, dizeyi çift tırnak içine almanız gerekir. Çift tırnak içeren bir değeri aramanız gerekiyorsa, dizeyi tek tırnak içine almanız gerekir.

Örneğin, aşağıdaki XML'e sahip olduğunuzu varsayalım:

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

Aşağıdaki Visual Basic kodu, tek tırnak işareti içeren bir öğeyi seçer:

VB
Dim nsmgr As XmlNamespaceManager = New XmlNamespaceManager(doc.NameTable)
nsmgr.AddNamespace("ab", "http://www.lucernepublishing.com")
book = root.SelectSingleNode("descendant::ab:book[ab:title=""'Emma'""]", nsmgr)

Bu yöntem, Belge Nesne Modeli'nin (DOM) Bir Microsoft uzantısıdır.

Ayrıca bkz.

Şunlara uygulanır

.NET 9 ve diğer sürümler
Ürün Sürümler
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1