XPathNavigator.Select Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Selecciona un conjunto de nodos usando la expresión XPath especificada.
Sobrecargas
Select(String) |
Selecciona un conjunto de nodos utilizando la expresión XPath especificada. |
Select(XPathExpression) |
Selecciona un conjunto de nodos utilizando la expresión XPathExpression especificada. |
Select(String, IXmlNamespaceResolver) |
Selecciona un conjunto de nodos mediante la expresión XPath especificada con el objeto IXmlNamespaceResolver especificado para resolver los prefijos de espacio de nombres. |
Select(String)
Selecciona un conjunto de nodos utilizando la expresión XPath especificada.
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
Parámetros
Devoluciones
XPathNodeIterator que señala el conjunto de nodos seleccionado.
Excepciones
La expresión XPath contiene un error o el tipo de valor devuelto no es un conjunto de nodos.
La expresión XPath no es válida.
Ejemplos
En el ejemplo siguiente se usa el Select método para seleccionar un conjunto de nodos.
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
En el ejemplo se toma como entrada el archivo books.xml
.
<?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>
Comentarios
El contexto de la selección es la posición de XPathNavigator cuando se llama a este método. Después de llamar a este método, el XPathNodeIterator devuelto representa el conjunto de nodos seleccionados. Use MoveNext el XPathNodeIterator método de para iterar sobre el conjunto de nodos seleccionado.
El siguiente código de C# recorre en iteración el conjunto seleccionado de nodos.
XPathNodeIterator iterator = nav.Select("/bookstore/book");
while (iterator.MoveNext())
{
Console.WriteLine(Iterator.Current.Name);
}
A continuación se muestran notas importantes que se deben tener en cuenta al usar el Select método .
Todavía puede usar cualquiera de los XPathNavigator métodos de navegación del objeto para moverse dentro de XPathNavigator. Los XPathNavigator métodos de navegación son independientes de los nodos seleccionados en .XPathNodeIterator
Las llamadas futuras al Select método devuelven un nuevo XPathNodeIterator objeto que apunta al conjunto seleccionado de nodos que coincide con la nueva Select llamada. Los dos XPathNodeIterator objetos son completamente independientes entre sí.
Si la expresión XPath requiere la resolución del espacio de nombres, use la Select sobrecarga , que toma como XPathExpression argumento .
Este método no tiene ningún efecto en el estado de XPathNavigator.
Consulte también
- SelectNodes(String)
- SelectSingleNode(String)
- SelectDescendants(XPathNodeType, Boolean)
- SelectChildren(XPathNodeType)
- SelectAncestors(XPathNodeType, Boolean)
Se aplica a
Select(XPathExpression)
Selecciona un conjunto de nodos utilizando la expresión XPathExpression especificada.
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
Parámetros
- expr
- XPathExpression
Objeto XPathExpression que contiene la consulta XPath compilada.
Devoluciones
XPathNodeIterator que señala el conjunto de nodos seleccionado.
Excepciones
La expresión XPath contiene un error o el tipo de valor devuelto no es un conjunto de nodos.
La expresión XPath no es válida.
Ejemplos
En el ejemplo siguiente se usa el Select método para seleccionar un conjunto de nodos.
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
En el ejemplo se toma como entrada el archivo books.xml
.
<?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>
Comentarios
El contexto de la selección es la posición de XPathNavigator cuando se llama a este método. Después de llamar a este método, el XPathNodeIterator devuelto representa el conjunto de nodos seleccionados. Use MoveNext en para XPathNodeIterator iterar sobre el conjunto de nodos seleccionado.
El siguiente código de C# recorre en iteración el conjunto seleccionado de nodos.
XPathNodeIterator ni = nav.Select(expr);
while (ni.MoveNext())
{
Console.WriteLine(ni.Current.Name);
}
A continuación se muestran notas importantes que se deben tener en cuenta al usar el Select método .
Todavía puede usar cualquiera de los XPathNavigator métodos de navegación del objeto para moverse dentro de XPathNavigator. Los XPathNavigator métodos de navegación son independientes de los nodos seleccionados en .XPathNodeIterator
Las llamadas futuras al Select método devuelven un nuevo XPathNodeIterator objeto que apunta al conjunto seleccionado de nodos que coincide con la nueva Select llamada. Los dos XPathNodeIterator objetos son completamente independientes entre sí.
Si requiere resolución XPathExpression de espacio de nombres, se debe agregar el par de URI de prefijo y espacio de nombres a XmlNamespaceManagery se SetContext debe llamar al método para especificar el XmlNamespaceManager que se va a usar para la resolución del espacio de nombres.
Por ejemplo, supongamos que el documento contiene los siguientes nodos XML.
<bookstore xmlns:bk='urn:samples'>
<book bk:ISBN='1-325-0980'>
<title>Pride And Prejudice</title>
</book>
</bookstore>
En este caso, el siguiente código de C# selecciona el 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
XPathExpression Si no incluye un prefijo, se supone que el URI del espacio de nombres es el espacio de nombres vacío. Si el XML incluye un espacio de nombres predeterminado, debe seguir usando el SetContext método y proporcionar un XmlNamespaceManager que contenga un URI de prefijo y espacio de nombres para controlar el espacio de nombres predeterminado.
Por ejemplo, supongamos que tiene el siguiente XML.
<bookstore xmlns="http://www.lucernepublishing.com">
<book>
<title>Pride And Prejudice</title>
</book>
</bookstore>
En este caso, el código de C# siguiente selecciona todos los nodos de 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);
Este método no tiene ningún efecto en el estado de XPathNavigator.
Consulte también
- SelectNodes(String)
- SelectSingleNode(String)
- SelectDescendants(XPathNodeType, Boolean)
- SelectChildren(XPathNodeType)
- SelectAncestors(XPathNodeType, Boolean)
Se aplica a
Select(String, IXmlNamespaceResolver)
Selecciona un conjunto de nodos mediante la expresión XPath especificada con el objeto IXmlNamespaceResolver especificado para resolver los prefijos de espacio de nombres.
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
Parámetros
- resolver
- IXmlNamespaceResolver
Objeto IXmlNamespaceResolver usado para resolver los prefijos de los espacios de nombres.
Devoluciones
XPathNodeIterator que señala el conjunto de nodos seleccionado.
Excepciones
La expresión XPath contiene un error o el tipo de valor devuelto no es un conjunto de nodos.
La expresión XPath no es válida.
Ejemplos
En el ejemplo siguiente se muestra cómo seleccionar un conjunto de nodos mediante el método con el Select XmlNamespaceManager objeto especificado para resolver los prefijos de espacio de nombres en la expresión 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
En el ejemplo se toma como entrada el archivo contosoBooks.xml
.
<?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>