XPathNavigator.Select Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Seleziona un insieme di nodi usando l'espressione XPath specificata.
Overload
Select(String) |
Seleziona un insieme di nodi utilizzando l'espressione XPath specificata. |
Select(XPathExpression) |
Seleziona un insieme di nodi utilizzando l'oggetto XPathExpression specificato. |
Select(String, IXmlNamespaceResolver) |
Seleziona un insieme di nodi utilizzando l'espressione XPath specificata con l'oggetto IXmlNamespaceResolver specificato per la risoluzione dei prefissi degli spazi dei nomi. |
Select(String)
Seleziona un insieme di nodi utilizzando l'espressione XPath specificata.
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
Parametri
Restituisce
Oggetto XPathNodeIterator che punta al set di nodi selezionato.
Eccezioni
L'espressione XPath contiene un errore o il tipo restituito non è un insieme di nodi.
L’espressione XPath non è valida.
Esempio
Nell'esempio seguente viene usato il Select metodo per selezionare un set di nodi.
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
Nell'esempio il file books.xml
viene considerato come input.
<?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>
Commenti
Il contesto per la selezione è la posizione dell'oggetto XPathNavigator quando viene chiamato questo metodo. Dopo aver chiamato questo metodo, l'oggetto XPathNodeIterator restituito rappresenta il set di nodi selezionati. Utilizzare MoveNext il metodo dell'oggetto per eseguire l'iterazione XPathNodeIterator sul set di nodi selezionato.
Il codice C# seguente esegue l'iterazione del set selezionato di nodi.
XPathNodeIterator iterator = nav.Select("/bookstore/book");
while (iterator.MoveNext())
{
Console.WriteLine(Iterator.Current.Name);
}
Di seguito sono riportate note importanti da considerare quando si usa il Select metodo .
È comunque possibile usare uno dei XPathNavigator metodi di spostamento dell'oggetto per spostarsi all'interno di XPathNavigator. I XPathNavigator metodi di spostamento sono indipendenti dai nodi selezionati in XPathNodeIterator.
Le chiamate future al Select metodo restituiscono un nuovo XPathNodeIterator oggetto che punta al set selezionato di nodi che corrispondono alla nuova Select chiamata. I due XPathNodeIterator oggetti sono completamente indipendenti tra loro.
Se l'espressione XPath richiede la risoluzione dello spazio dei nomi, usare l'overload Select , che accetta come XPathExpression argomento.
Questo metodo non ha alcun effetto sullo stato dell'oggetto XPathNavigator.
Vedi anche
- SelectNodes(String)
- SelectSingleNode(String)
- SelectDescendants(XPathNodeType, Boolean)
- SelectChildren(XPathNodeType)
- SelectAncestors(XPathNodeType, Boolean)
Si applica a
Select(XPathExpression)
Seleziona un insieme di nodi utilizzando l'oggetto XPathExpression specificato.
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
Parametri
- expr
- XPathExpression
Oggetto XPathExpression contenente la query XPath compilata.
Restituisce
Oggetto XPathNodeIterator che punta al set di nodi selezionato.
Eccezioni
L'espressione XPath contiene un errore o il tipo restituito non è un insieme di nodi.
L’espressione XPath non è valida.
Esempio
Nell'esempio seguente viene usato il Select metodo per selezionare un set di nodi.
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
Nell'esempio il file books.xml
viene considerato come input.
<?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>
Commenti
Il contesto per la selezione è la posizione dell'oggetto XPathNavigator quando si chiama questo metodo. Dopo aver chiamato questo metodo, l'oggetto XPathNodeIterator restituito rappresenta il set di nodi selezionati. Usare MoveNext nell'oggetto per eseguire l'iterazione XPathNodeIterator sul set di nodi selezionato.
Il codice C# seguente esegue l'iterazione del set selezionato di nodi.
XPathNodeIterator ni = nav.Select(expr);
while (ni.MoveNext())
{
Console.WriteLine(ni.Current.Name);
}
Di seguito sono riportate note importanti da considerare quando si usa il Select metodo .
È comunque possibile usare uno dei XPathNavigator metodi di spostamento dell'oggetto per spostarsi all'interno di XPathNavigator. I XPathNavigator metodi di spostamento sono indipendenti dai nodi selezionati in XPathNodeIterator.
Le chiamate future al Select metodo restituiscono un nuovo XPathNodeIterator oggetto che punta al set selezionato di nodi che corrispondono alla nuova Select chiamata. I due XPathNodeIterator oggetti sono completamente indipendenti tra loro.
XPathExpression Se la risoluzione dello spazio dei nomi richiede la risoluzione dello spazio dei nomi, il prefisso e la coppia URI dello spazio dei nomi deve essere aggiunta a un XmlNamespaceManageroggetto e il SetContext metodo deve essere chiamato per specificare l'oggetto XmlNamespaceManager da usare per la risoluzione dello spazio dei nomi.
Si supponga, ad esempio, che il documento contenga i nodi XML seguenti.
<bookstore xmlns:bk='urn:samples'>
<book bk:ISBN='1-325-0980'>
<title>Pride And Prejudice</title>
</book>
</bookstore>
In questo caso, il codice C# seguente seleziona il bk:ISBN
nodo.
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);
Nota
Se non include un prefisso, si presuppone che l'URI XPathExpression dello spazio dei nomi sia lo spazio dei nomi vuoto. Se il codice XML include uno spazio dei nomi predefinito, è comunque necessario usare il SetContext metodo e specificare un XmlNamespaceManager oggetto contenente un prefisso e un URI dello spazio dei nomi per gestire lo spazio dei nomi predefinito.
Si supponga, ad esempio, di avere il codice XML seguente.
<bookstore xmlns="http://www.lucernepublishing.com">
<book>
<title>Pride And Prejudice</title>
</book>
</bookstore>
In questo caso, il codice C# seguente seleziona tutti i nodi del libro:
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);
Questo metodo non ha alcun effetto sullo stato dell'oggetto XPathNavigator.
Vedi anche
- SelectNodes(String)
- SelectSingleNode(String)
- SelectDescendants(XPathNodeType, Boolean)
- SelectChildren(XPathNodeType)
- SelectAncestors(XPathNodeType, Boolean)
Si applica a
Select(String, IXmlNamespaceResolver)
Seleziona un insieme di nodi utilizzando l'espressione XPath specificata con l'oggetto IXmlNamespaceResolver specificato per la risoluzione dei prefissi degli spazi dei nomi.
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
Parametri
- resolver
- IXmlNamespaceResolver
Oggetto IXmlNamespaceResolver usato per la risoluzione dei prefissi degli spazi dei nomi.
Restituisce
Oggetto XPathNodeIterator che punta al set di nodi selezionato.
Eccezioni
L'espressione XPath contiene un errore o il tipo restituito non è un insieme di nodi.
L’espressione XPath non è valida.
Esempio
Nell'esempio seguente viene illustrata la selezione di un set di nodi usando il metodo con l'oggetto Select XmlNamespaceManager specificato per risolvere i prefissi dello spazio dei nomi nell'espressione XPath.
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
Nell'esempio il file contosoBooks.xml
viene considerato come input.
<?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>