Select Método (XPathExpression)
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

XPathNavigator.Select (Método) (XPathExpression)

 

Selecciona un conjunto de nodos usando el XPathExpression especificado.

Espacio de nombres:   System.Xml.XPath
Ensamblado:  System.Xml (en System.Xml.dll)

public virtual XPathNodeIterator Select(
	XPathExpression expr
)

Parámetros

expr
Type: System.Xml.XPath.XPathExpression

Objeto XPathExpression que contiene la consulta XPath compilada.

Valor devuelto

Type: System.Xml.XPath.XPathNodeIterator

XPathNodeIterator que señala el conjunto de nodos seleccionado.

Exception Condition
ArgumentException

La expresión XPath contiene un error o su tipo de valor devuelto no es un conjunto de nodos.

XPathException

La expresión XPath no es válida.

The context for the selection is the position of the T:System.Xml.XPath.XPathNavigator when you called this method. After you call this method, the T:System.Xml.XPath.XPathNodeIterator returned represents the set of selected nodes. Use M:System.Xml.XPath.XPathNodeIterator.MoveNext on the T:System.Xml.XPath.XPathNodeIterator to iterate over the selected node set.

The following C# code iterates over the selected set of nodes.

XPathNodeIterator ni = nav.Select(expr); while (ni.MoveNext()) { Console.WriteLine(ni.Current.Name); }

The following are important notes to consider when using the M:System.Xml.XPath.XPathNavigator.Select(System.String) method.

  • You can still use any of the T:System.Xml.XPath.XPathNavigator object's navigation methods to move within the T:System.Xml.XPath.XPathNavigator. The T:System.Xml.XPath.XPathNavigator navigation methods are independent of the selected nodes in the T:System.Xml.XPath.XPathNodeIterator.

  • Future calls to the M:System.Xml.XPath.XPathNavigator.Select(System.String) method return a new T:System.Xml.XPath.XPathNodeIterator object that points to the selected set of nodes that matches the new M:System.Xml.XPath.XPathNavigator.Select(System.String) call. The two T:System.Xml.XPath.XPathNodeIterator objects are completely independent of each other.

  • If the T:System.Xml.XPath.XPathExpression requires namespace resolution, the prefix and namespace URI pair must be added to an T:System.Xml.XmlNamespaceManager, and the M:System.Xml.XPath.XPathExpression.SetContext(System.Xml.XmlNamespaceManager) method must be called to specify the T:System.Xml.XmlNamespaceManager to use for namespace resolution.

For example, suppose the document contains the following XML nodes.

<bookstore xmlns:bk='urn:samples'> <book bk:ISBN='1-325-0980'> <title>Pride And Prejudice</title> </book> </bookstore>

In this case, the following C# code selects the bk:ISBN node.

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

If the T:System.Xml.XPath.XPathExpression does not include a prefix, it is assumed that the namespace URI is the empty namespace. If your XML includes a default namespace, you must still use the M:System.Xml.XPath.XPathExpression.SetContext(System.Xml.XmlNamespaceManager) method and provide an T:System.Xml.XmlNamespaceManager that contains a prefix and namespace URI to handle the default namespace.

For example, suppose you have the following XML.

<bookstore xmlns="http://www.lucernepublishing.com"> <book> <title>Pride And Prejudice</title> </book> </bookstore>

In this case, the following C# code selects all book nodes:

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

This method has no effect on the state of the T:System.Xml.XPath.XPathNavigator.

The following example uses the M:System.Xml.XPath.XPathNavigator.Select(System.Xml.XPath.XPathExpression) method to select a node set.

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

The example takes the books.xml file as an 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>

Universal Windows Platform
Disponible desde 10
.NET Framework
Disponible desde 1.1
Silverlight
Disponible desde 4.0
Volver al principio
Mostrar:
© 2016 Microsoft