XPathNavigator.Select Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
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
- SelectNodes(String)
- SelectSingleNode(String)
- SelectDescendants(XPathNodeType, Boolean)
- SelectChildren(XPathNodeType)
- SelectAncestors(XPathNodeType, Boolean)
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.
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 die XPathExpression Namespaceauflösung erforderlich ist, muss das Präfix- und Namespace-URI-Paar einem XmlNamespaceManagerHinzugefügt werden, und die SetContext Methode muss aufgerufen werden, um die für die XmlNamespaceManager Namespaceauflösung zu verwendende Methode anzugeben.
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
- SelectNodes(String)
- SelectSingleNode(String)
- SelectDescendants(XPathNodeType, Boolean)
- SelectChildren(XPathNodeType)
- SelectAncestors(XPathNodeType, Boolean)
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
- 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>