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 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
Gibt zurück
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
- SelectNodes(String)
- SelectSingleNode(String)
- SelectDescendants(XPathNodeType, Boolean)
- SelectChildren(XPathNodeType)
- SelectAncestors(XPathNodeType, Boolean)
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
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.
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 die XPathExpression Namespaceauflösung erforderlich ist, muss das Präfix- und Namespace-URI-Paar einem XmlNamespaceManagerURI-Paar hinzugefü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);
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
- SelectNodes(String)
- SelectSingleNode(String)
- SelectDescendants(XPathNodeType, Boolean)
- SelectChildren(XPathNodeType)
- SelectAncestors(XPathNodeType, Boolean)
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
- resolver
- IXmlNamespaceResolver
Das zum Auflösen von Namespacepräfixen verwendete IXmlNamespaceResolver-Objekt.
Gibt zurück
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>