Teilen über


XPathNavigator.Select Methode

Definition

Wählt unter Verwendung des angegebenen XPath-Ausdrucks eine Knotengruppe aus.

Überlädt

Select(String)

Wählt unter Verwendung des angegebenen XPath-Ausdrucks eine Knotengruppe aus.

Select(XPathExpression)

Wählt unter Verwendung der angegebenen XPathExpression eine Knotengruppe aus.

Select(String, IXmlNamespaceResolver)

Wählt mit dem angegebenen XPath-Ausdruck eine Knotengruppe aus, wobei das angegebene IXmlNamespaceResolver-Objekt zum Auflösen von Namespacepräfixen verwendet wird.

Select(String)

Wählt unter Verwendung des angegebenen XPath-Ausdrucks eine Knotengruppe aus.

public:
 virtual System::Xml::XPath::XPathNodeIterator ^ Select(System::String ^ xpath);
public virtual System.Xml.XPath.XPathNodeIterator Select (string xpath);
abstract member Select : string -> System.Xml.XPath.XPathNodeIterator
override this.Select : string -> System.Xml.XPath.XPathNodeIterator
Public Overridable Function Select (xpath As String) As XPathNodeIterator

Parameter

xpath
String

Eine String, die einen XPath-Ausdruck darstellt.

Gibt zurück

XPathNodeIterator

Ein XPathNodeIterator, der auf die ausgewählte Knotengruppe zeigt.

Ausnahmen

Der XPath-Ausdruck enthält einen Fehler oder der Rückgabetyp ist keine Knotengruppe.

Der XPath-Ausdruck ist ungültig.

Beispiele

Im folgenden Beispiel wird die Select Methode verwendet, um einen Knotensatz auszuwählen.

XPathDocument^ document = gcnew XPathDocument("books.xml");
XPathNavigator^ navigator = document->CreateNavigator();

XPathNodeIterator^ nodes = navigator->Select("/bookstore/book");
nodes->MoveNext();
XPathNavigator^ nodesNavigator = nodes->Current;

XPathNodeIterator^ nodesText = nodesNavigator->SelectDescendants(XPathNodeType::Text, false);

while (nodesText->MoveNext())
    Console::WriteLine(nodesText->Current->Value);
XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();

XPathNodeIterator nodes = navigator.Select("/bookstore/book");
nodes.MoveNext();
XPathNavigator nodesNavigator = nodes.Current;

XPathNodeIterator nodesText = nodesNavigator.SelectDescendants(XPathNodeType.Text, false);

while (nodesText.MoveNext())
    Console.WriteLine(nodesText.Current.Value);
Dim document As XPathDocument = New XPathDocument("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()

Dim nodes As XPathNodeIterator = navigator.Select("/bookstore/book")
nodes.MoveNext()
Dim nodesNavigator As XPathNavigator = nodes.Current

Dim nodesText As XPathNodeIterator = nodesNavigator.SelectDescendants(XPathNodeType.Text, False)

While nodesText.MoveNext()
    Console.WriteLine(nodesText.Current.Value)
End While

In diesem Beispiel wird die Datei books.xml als Eingabe verwendet.

<?xml version="1.0" encoding="utf-8" ?>   
<bookstore>  
    <book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">  
        <title>The Autobiography of Benjamin Franklin</title>  
        <author>  
            <first-name>Benjamin</first-name>  
            <last-name>Franklin</last-name>  
        </author>  
        <price>8.99</price>  
    </book>  
    <book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">  
        <title>The Confidence Man</title>  
        <author>  
            <first-name>Herman</first-name>  
            <last-name>Melville</last-name>  
        </author>  
        <price>11.99</price>  
    </book>  
    <book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">  
        <title>The Gorgias</title>  
        <author>  
            <name>Plato</name>  
        </author>  
        <price>9.99</price>  
    </book>  
</bookstore>  

Hinweise

Der Kontext für die Auswahl ist die Position, an der XPathNavigator diese Methode aufgerufen wird. Nach dem Aufrufen dieser Methode stellt die XPathNodeIterator zurückgegebene Methode den Satz ausgewählter Knoten dar. Verwenden Sie MoveNext die Methode, XPathNodeIterator um den ausgewählten Knotensatz zu durchlaufen.

Der folgende C#-Code durchläuft den ausgewählten Satz von Knoten.

XPathNodeIterator iterator = nav.Select("/bookstore/book");  
while (iterator.MoveNext())  
{  
    Console.WriteLine(Iterator.Current.Name);  
}  

Im Folgenden sind wichtige Hinweise zur Verwendung der Select Methode zu berücksichtigen.

  • Sie können weiterhin eine der Navigationsmethoden des XPathNavigator Objekts verwenden, um innerhalb des XPathNavigatorObjekts zu navigieren. Die XPathNavigator Navigationsmethoden sind unabhängig von den ausgewählten Knoten in der XPathNodeIterator.

  • Zukünftige Aufrufe der Select Methode geben ein neues XPathNodeIterator Objekt zurück, das auf den ausgewählten Satz von Knoten verweist, die dem neuen Select Aufruf entsprechen. Die beiden XPathNodeIterator Objekte sind vollständig unabhängig voneinander.

  • Wenn der XPath-Ausdruck Namespaceauflösung erfordert, verwenden Sie die Überladung, die Select als XPathExpression Argument verwendet wird.

  • Diese Methode hat keine Auswirkung auf den Zustand des XPathNavigator.

Siehe auch

Gilt für

Select(XPathExpression)

Wählt unter Verwendung der angegebenen XPathExpression eine Knotengruppe aus.

public:
 virtual System::Xml::XPath::XPathNodeIterator ^ Select(System::Xml::XPath::XPathExpression ^ expr);
public virtual System.Xml.XPath.XPathNodeIterator Select (System.Xml.XPath.XPathExpression expr);
abstract member Select : System.Xml.XPath.XPathExpression -> System.Xml.XPath.XPathNodeIterator
override this.Select : System.Xml.XPath.XPathExpression -> System.Xml.XPath.XPathNodeIterator
Public Overridable Function Select (expr As XPathExpression) As XPathNodeIterator

Parameter

expr
XPathExpression

Ein XPathExpression-Objekt, das die kompilierte XPath-Abfrage enthält.

Gibt zurück

XPathNodeIterator

Ein XPathNodeIterator, der auf die ausgewählte Knotengruppe zeigt.

Ausnahmen

Der XPath-Ausdruck enthält einen Fehler oder der Rückgabetyp ist keine Knotengruppe.

Der XPath-Ausdruck ist ungültig.

Beispiele

Im folgenden Beispiel wird die Select Methode verwendet, um einen Knotensatz auszuwählen.

XPathDocument^ document = gcnew XPathDocument("books.xml");
XPathNavigator^ navigator = document->CreateNavigator();

XPathExpression^ query = navigator->Compile("/bookstore/book");
XPathNodeIterator^ nodes = navigator->Select(query);
XPathNavigator^ nodesNavigator = nodes->Current;

XPathNodeIterator^ nodesText = nodesNavigator->SelectDescendants(XPathNodeType::Text, false);

while (nodesText->MoveNext())
{
    Console::WriteLine(nodesText->Current->Value);
}
XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();

XPathExpression query = navigator.Compile("/bookstore/book");
XPathNodeIterator nodes = navigator.Select(query);
XPathNavigator nodesNavigator = nodes.Current;

XPathNodeIterator nodesText = nodesNavigator.SelectDescendants(XPathNodeType.Text, false);

while (nodesText.MoveNext())
{
    Console.WriteLine(nodesText.Current.Value);
}
Dim document As XPathDocument = New XPathDocument("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()

Dim query As XPathExpression = navigator.Compile("/bookstore/book")
Dim nodes As XPathNodeIterator = navigator.Select(query)
Dim nodesNavigator As XPathNavigator = nodes.Current

Dim nodesText As XPathNodeIterator = nodesNavigator.SelectDescendants(XPathNodeType.Text, False)

While nodesText.MoveNext()
    Console.WriteLine(nodesText.Current.Value)
End While

In diesem Beispiel wird die Datei books.xml als Eingabe verwendet.

<?xml version="1.0" encoding="utf-8" ?>   
<bookstore>  
    <book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">  
        <title>The Autobiography of Benjamin Franklin</title>  
        <author>  
            <first-name>Benjamin</first-name>  
            <last-name>Franklin</last-name>  
        </author>  
        <price>8.99</price>  
    </book>  
    <book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">  
        <title>The Confidence Man</title>  
        <author>  
            <first-name>Herman</first-name>  
            <last-name>Melville</last-name>  
        </author>  
        <price>11.99</price>  
    </book>  
    <book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">  
        <title>The Gorgias</title>  
        <author>  
            <name>Plato</name>  
        </author>  
        <price>9.99</price>  
    </book>  
</bookstore>  

Hinweise

Der Kontext für die Auswahl ist die Position, an der XPathNavigator Sie diese Methode aufgerufen haben. Nachdem Sie diese Methode aufgerufen haben, stellt die XPathNodeIterator zurückgegebene Methode den Satz ausgewählter Knoten dar. Verwenden Sie die XPathNodeIterator Option MoveNext zum Durchlaufen des ausgewählten Knotensatzes.

Der folgende C#-Code durchläuft den ausgewählten Satz von Knoten.

XPathNodeIterator ni = nav.Select(expr);  
while (ni.MoveNext())  
{  
    Console.WriteLine(ni.Current.Name);  
}  

Im Folgenden sind wichtige Hinweise zur Verwendung der Select Methode zu berücksichtigen.

Angenommen, das Dokument enthält die folgenden XML-Knoten.

<bookstore xmlns:bk='urn:samples'>  
    <book bk:ISBN='1-325-0980'>  
        <title>Pride And Prejudice</title>  
    </book>  
</bookstore>  

In diesem Fall wählt der folgende C#-Code den bk:ISBN Knoten aus.

XPathExpression expr = nav.Compile("book/@bk:ISBN");  
XmlNamespaceManager mngr = new XmlNamespaceManager(new NameTable());  
mngr.AddNamespace("bk","urn:samples");  
expr.SetContext(mngr);  
XPathNodeIterator ni = nav.Select(expr);  

Hinweis

Wenn das XPathExpression Präfix nicht enthält, wird davon ausgegangen, dass der Namespace-URI der leere Namespace ist. Wenn Ihr XML einen Standardnamespace enthält, müssen Sie die SetContext Methode weiterhin verwenden und einen XmlNamespaceManager Präfix- und Namespace-URI bereitstellen, um den Standardnamespace zu behandeln.

Angenommen, Sie haben den folgenden XML-Code.

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

In diesem Fall wählt der folgende C#-Code alle Buchknoten aus:

XmlNamespaceManager nsmgr = new XmlNamespaceManager(nav.NameTable);  
nsmgr.AddNamespace("ab", "http://www.lucernepublishing.com");  
XPathExpression expr;  
expr = nav.Compile("//ab:book");  
expr.SetContext(nsmgr);  
XPathNodeIterator ni = nav.Select(expr);  

Diese Methode hat keine Auswirkung auf den Zustand des XPathNavigator.

Siehe auch

Gilt für

Select(String, IXmlNamespaceResolver)

Wählt mit dem angegebenen XPath-Ausdruck eine Knotengruppe aus, wobei das angegebene IXmlNamespaceResolver-Objekt zum Auflösen von Namespacepräfixen verwendet wird.

public:
 virtual System::Xml::XPath::XPathNodeIterator ^ Select(System::String ^ xpath, System::Xml::IXmlNamespaceResolver ^ resolver);
public virtual System.Xml.XPath.XPathNodeIterator Select (string xpath, System.Xml.IXmlNamespaceResolver? resolver);
public virtual System.Xml.XPath.XPathNodeIterator Select (string xpath, System.Xml.IXmlNamespaceResolver resolver);
abstract member Select : string * System.Xml.IXmlNamespaceResolver -> System.Xml.XPath.XPathNodeIterator
override this.Select : string * System.Xml.IXmlNamespaceResolver -> System.Xml.XPath.XPathNodeIterator
Public Overridable Function Select (xpath As String, resolver As IXmlNamespaceResolver) As XPathNodeIterator

Parameter

xpath
String

Eine String, die einen XPath-Ausdruck darstellt.

resolver
IXmlNamespaceResolver

Das zum Auflösen von Namespacepräfixen verwendete IXmlNamespaceResolver-Objekt.

Gibt zurück

XPathNodeIterator

Ein XPathNodeIterator, der auf die ausgewählte Knotengruppe zeigt.

Ausnahmen

Der XPath-Ausdruck enthält einen Fehler oder der Rückgabetyp ist keine Knotengruppe.

Der XPath-Ausdruck ist ungültig.

Beispiele

Im folgenden Beispiel wird das Auswählen eines Knotensatzes mithilfe der Select Methode mit dem objekt veranschaulicht, das XmlNamespaceManager zum Auflösen von Namespacepräfixen im XPath-Ausdruck angegeben ist.

XPathDocument^ document = gcnew XPathDocument("contosoBooks.xml");
XPathNavigator^ navigator = document->CreateNavigator();

XmlNamespaceManager^ manager = gcnew XmlNamespaceManager(navigator->NameTable);
manager->AddNamespace("bk", "http://www.contoso.com/books");

XPathNodeIterator^ nodes = navigator->Select("/bk:bookstore/bk:book/bk:price", manager);
// Move to the first node bk:price node.
if(nodes->MoveNext())
{
    // Now nodes.Current points to the first selected node.
XPathNavigator^ nodesNavigator = nodes->Current;

    // Select all the descendants of the current price node.
XPathNodeIterator^ nodesText = nodesNavigator->SelectDescendants(XPathNodeType::Text, false);

    while(nodesText->MoveNext())
    {
Console::WriteLine(nodesText->Current->Value);
    }
}
XPathDocument document = new XPathDocument("contosoBooks.xml");
XPathNavigator navigator = document.CreateNavigator();
XmlNamespaceManager manager = new XmlNamespaceManager(navigator.NameTable);
manager.AddNamespace("bk", "http://www.contoso.com/books");

XPathNodeIterator nodes = navigator.Select("/bk:bookstore/bk:book/bk:price", manager);
// Move to the first node bk:price node
if(nodes.MoveNext())
{
    // now nodes.Current points to the first selected node
    XPathNavigator nodesNavigator = nodes.Current;

    //select all the descendants of the current price node
    XPathNodeIterator nodesText =
       nodesNavigator.SelectDescendants(XPathNodeType.Text, false);

    while(nodesText.MoveNext())
    {
       Console.WriteLine(nodesText.Current.Value);
    }
}
Dim document As XPathDocument = New XPathDocument("contosoBooks.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()

Dim manager As XmlNamespaceManager = New XmlNamespaceManager(navigator.NameTable)
manager.AddNamespace("bk", "http://www.contoso.com/books")

Dim nodes As XPathNodeIterator = navigator.Select("/bk:bookstore/bk:book/bk:price", manager)
' Move to the first node bk:price node.
If (nodes.MoveNext()) Then
    ' Now nodes.Current points to the first selected node.
    Dim nodesNavigator As XPathNavigator = nodes.Current

    ' Select all the descendants of the current price node.
    Dim nodesText As XPathNodeIterator = nodesNavigator.SelectDescendants(XPathNodeType.Text, False)

    While nodesText.MoveNext()
        Console.WriteLine(nodesText.Current.Value)
    End While
End If

In diesem Beispiel wird die Datei contosoBooks.xml als Eingabe verwendet.

<?xml version="1.0" encoding="utf-8" ?>  
<bookstore xmlns="http://www.contoso.com/books">  
    <book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">  
        <title>The Autobiography of Benjamin Franklin</title>  
        <author>  
            <first-name>Benjamin</first-name>  
            <last-name>Franklin</last-name>  
        </author>  
        <price>8.99</price>  
    </book>  
    <book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">  
        <title>The Confidence Man</title>  
        <author>  
            <first-name>Herman</first-name>  
            <last-name>Melville</last-name>  
        </author>  
        <price>11.99</price>  
    </book>  
    <book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">  
        <title>The Gorgias</title>  
        <author>  
            <name>Plato</name>  
        </author>  
        <price>9.99</price>  
    </book>  
</bookstore>  

Gilt für