XPathNavigator.Select Methode

Definition

Wählt einen Knotensatz mithilfe des angegebenen XPath-Ausdrucks aus.

Überlädt

Name Beschreibung
Select(String)

Wählt einen Knotensatz mithilfe des angegebenen XPath-Ausdrucks aus.

Select(XPathExpression)

Wählt einen Knotensatz mithilfe des angegebenen XPathExpressionKnotens aus.

Select(String, IXmlNamespaceResolver)

Wählt einen Knotensatz mithilfe des angegebenen XPath-Ausdrucks mit dem IXmlNamespaceResolver angegebenen Objekt aus, um Namespacepräfixe aufzulösen.

Select(String)

Wählt einen Knotensatz mithilfe des angegebenen XPath-Ausdrucks 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

Ein String XPath-Ausdruck, der einen XPath-Ausdruck darstellt.

Gibt zurück

Ein XPathNodeIterator Zeiger auf den ausgewählten Knotensatz.

Ausnahmen

Der XPath-Ausdruck enthält einen Fehler, oder der Rückgabetyp ist kein Knotensatz.

Der XPath-Ausdruck ist ungültig.

Beispiele

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

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

Im Beispiel wird die books.xml Datei 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 der XPathNodeIterator zurückgegebene Satz der ausgewählten Knoten dar. Verwenden Sie MoveNext die Methode zum XPathNodeIterator Durchlaufen des ausgewählten Knotensatzes.

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 finden Sie wichtige Hinweise, die Sie bei der Verwendung der Select Methode berücksichtigen sollten.

  • 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, der dem neuen Select Aufruf entspricht. Die beiden XPathNodeIterator Objekte sind völlig unabhängig voneinander.

  • Wenn für den XPath-Ausdruck eine Namespaceauflösung erforderlich ist, verwenden Sie die Select Überladung, die als XPathExpression Argument verwendet wird.

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

Weitere Informationen

Gilt für:

Select(XPathExpression)

Wählt einen Knotensatz mithilfe des angegebenen XPathExpressionKnotens 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

Ein XPathNodeIterator Punkt, der auf den ausgewählten Knotensatz verweist.

Ausnahmen

Der XPath-Ausdruck enthält einen Fehler, oder der Rückgabetyp ist kein Knotensatz.

Der XPath-Ausdruck ist ungültig.

Beispiele

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

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

Im Beispiel wird die books.xml Datei 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 der XPathNavigator Methode, wenn 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 diese XPathNodeIterator OptionMoveNext, um den ausgewählten Knotensatz zu durchlaufen.

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 finden Sie wichtige Hinweise, die Sie bei der Verwendung der Select Methode berücksichtigen sollten.

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

Note

Wenn das XPathExpression Präfix nicht enthalten ist, 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 Namespace-URI bereitstellen, der einen Präfix- und Namespace-URI enthält, um den Standardnamespace zu verarbeiten.

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.

Weitere Informationen

Gilt für:

Select(String, IXmlNamespaceResolver)

Wählt einen Knotensatz mithilfe des angegebenen XPath-Ausdrucks mit dem IXmlNamespaceResolver angegebenen Objekt aus, um Namespacepräfixe aufzulösen.

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

Ein String XPath-Ausdruck, der einen XPath-Ausdruck darstellt.

resolver
IXmlNamespaceResolver

Das IXmlNamespaceResolver Objekt, das zum Auflösen von Namespacepräfixen verwendet wird.

Gibt zurück

Ein XPathNodeIterator Punkt, der auf den ausgewählten Knotensatz verweist.

Ausnahmen

Der XPath-Ausdruck enthält einen Fehler, oder der Rückgabetyp ist kein Knotensatz.

Der XPath-Ausdruck ist ungültig.

Beispiele

Das folgende Beispiel veranschaulicht das Auswählen eines Knotensatzes mithilfe der Methode mit dem SelectXmlNamespaceManager angegebenen Objekt, um Namespacepräfixe im XPath-Ausdruck aufzulösen.

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

Im Beispiel wird die contosoBooks.xml Datei 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: