XPathNavigator.MoveToNext 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í.
Mueve XPathNavigator al siguiente nodo relacionado del nodo actual.
Sobrecargas
| MoveToNext() |
Cuando se reemplaza en una clase derivada, desplaza el objeto XPathNavigator hasta el primer nodo relacionado del nodo actual. |
| MoveToNext(XPathNodeType) |
Mueve el objeto XPathNavigator al siguiente nodo relacionado del nodo actual que coincida con el XPathNodeType especificado. |
| MoveToNext(String, String) |
Desplaza el objeto XPathNavigator hasta el siguiente nodo relacionado con el nombre local y el URI de espacio de nombres especificados. |
MoveToNext()
- Source:
- XPathNavigator.cs
- Source:
- XPathNavigator.cs
- Source:
- XPathNavigator.cs
Cuando se reemplaza en una clase derivada, desplaza el objeto XPathNavigator hasta el primer nodo relacionado del nodo actual.
public:
abstract bool MoveToNext();
public abstract bool MoveToNext ();
abstract member MoveToNext : unit -> bool
Public MustOverride Function MoveToNext () As Boolean
Devoluciones
true si el desplazamiento de XPathNavigator al siguiente nodo relacionado se realiza correctamente; en caso contrario, false si no hay más elementos relacionados o si XPathNavigator está actualmente situado en un nodo de atributo. Si es false, no cambia la posición de XPathNavigator.
Ejemplos
En el ejemplo siguiente se recorre en iteración el árbol de nodos de forma recursiva y se muestra información sobre los nodos de elemento y texto.
static void XPathNavigatorMethods_MoveToNext()
{
XPathDocument^ document = gcnew XPathDocument("books.xml");
XPathNavigator^ navigator = document->CreateNavigator();
XPathNodeIterator^ nodeset = navigator->Select("descendant::book[author/last-name='Melville']");
while (nodeset->MoveNext())
{
// Clone iterator here when working with it.
RecursiveWalk(nodeset->Current->Clone());
}
}
static void RecursiveWalk(XPathNavigator^ navigator)
{
switch (navigator->NodeType)
{
case XPathNodeType::Element:
if (navigator->Prefix == String::Empty)
Console::WriteLine("<{0}>", navigator->LocalName);
else
Console::Write("<{0}:{1}>", navigator->Prefix, navigator->LocalName);
Console::WriteLine("\t" + navigator->NamespaceURI);
break;
case XPathNodeType::Text:
Console::WriteLine("\t" + navigator->Value);
break;
}
if (navigator->MoveToFirstChild())
{
do
{
RecursiveWalk(navigator);
} while (navigator->MoveToNext());
navigator->MoveToParent();
if (navigator->NodeType == XPathNodeType::Element)
Console::WriteLine("</{0}>", navigator->Name);
}
else
{
if (navigator->NodeType == XPathNodeType::Element)
{
Console::WriteLine("</{0}>", navigator->Name);
}
}
}
static void XPathNavigatorMethods_MoveToNext()
{
XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();
XPathNodeIterator nodeset = navigator.Select("descendant::book[author/last-name='Melville']");
while (nodeset.MoveNext())
{
// Clone iterator here when working with it.
RecursiveWalk(nodeset.Current.Clone());
}
}
public static void RecursiveWalk(XPathNavigator navigator)
{
switch (navigator.NodeType)
{
case XPathNodeType.Element:
if (string.IsNullOrEmpty(navigator.Prefix))
Console.WriteLine("<{0}>", navigator.LocalName);
else
Console.Write("<{0}:{1}>", navigator.Prefix, navigator.LocalName);
Console.WriteLine("\t" + navigator.NamespaceURI);
break;
case XPathNodeType.Text:
Console.WriteLine("\t" + navigator.Value);
break;
}
if (navigator.MoveToFirstChild())
{
do
{
RecursiveWalk(navigator);
} while (navigator.MoveToNext());
navigator.MoveToParent();
if (navigator.NodeType == XPathNodeType.Element)
Console.WriteLine("</{0}>", navigator.Name);
}
else
{
if (navigator.NodeType == XPathNodeType.Element)
{
Console.WriteLine("</{0}>", navigator.Name);
}
}
}
Shared Sub XPathNavigatorMethods_MoveToNext()
Dim document As XPathDocument = New XPathDocument("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()
Dim nodeset As XPathNodeIterator = navigator.Select("descendant::book[author/last-name='Melville']")
While nodeset.MoveNext()
' Clone iterator here when working with it.
RecursiveWalk(nodeset.Current.Clone())
End While
End Sub
Shared Sub RecursiveWalk(ByVal navigator As XPathNavigator)
Select Case navigator.NodeType
Case XPathNodeType.Element
If navigator.Prefix = String.Empty Then
Console.WriteLine("<{0}>", navigator.LocalName)
Else
Console.Write("<{0}:{1}>", navigator.Prefix, navigator.LocalName)
Console.WriteLine(vbTab + navigator.NamespaceURI)
End If
Case XPathNodeType.Text
Console.WriteLine(vbTab + navigator.Value)
End Select
If navigator.MoveToFirstChild() Then
Do
RecursiveWalk(navigator)
Loop While (navigator.MoveToNext())
navigator.MoveToParent()
If (navigator.NodeType = XPathNodeType.Element) Then
Console.WriteLine("</{0}>", navigator.Name)
End If
Else
If navigator.NodeType = XPathNodeType.Element Then
Console.WriteLine("</{0}>", navigator.Name)
End If
End If
End Sub
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>
Consulte también
Se aplica a
MoveToNext(XPathNodeType)
- Source:
- XPathNavigator.cs
- Source:
- XPathNavigator.cs
- Source:
- XPathNavigator.cs
Mueve el objeto XPathNavigator al siguiente nodo relacionado del nodo actual que coincida con el XPathNodeType especificado.
public:
virtual bool MoveToNext(System::Xml::XPath::XPathNodeType type);
public virtual bool MoveToNext (System.Xml.XPath.XPathNodeType type);
abstract member MoveToNext : System.Xml.XPath.XPathNodeType -> bool
override this.MoveToNext : System.Xml.XPath.XPathNodeType -> bool
Public Overridable Function MoveToNext (type As XPathNodeType) As Boolean
Parámetros
- type
- XPathNodeType
XPathNodeType del nodo relacionado al que se va a desplazar.
Devoluciones
true si el desplazamiento de XPathNavigator al siguiente nodo relacionado se realiza correctamente; en caso contrario, false si no hay más elementos relacionados o si XPathNavigator está actualmente situado en un nodo de atributo. Si es false, no cambia la posición de XPathNavigator.
Comentarios
El valor devuelto del MoveToNext método depende XPathNodeType del del nodo actual y del XPathNodeType del siguiente nodo relacionado al que se va a mover.
En la tabla siguiente se muestran los distintos XPathNodeType nodos y los nodos del mismo nivel a los que pueden moverse.
| XPathNodeType del nodo actual | XPathNodeType del nodo relacionado |
|---|---|
| Element | Element, ProcessingInstruction, Comment o Text. |
| Text | Element, ProcessingInstruction, Comment o Text. |
| ProcessingInstruction | Element, ProcessingInstruction, Comment o Text. |
| Comment | Element, ProcessingInstruction, Comment o Text. |
| Todos los demás XPathNodeType valores | Ninguno. |
Se aplica a
MoveToNext(String, String)
- Source:
- XPathNavigator.cs
- Source:
- XPathNavigator.cs
- Source:
- XPathNavigator.cs
Desplaza el objeto XPathNavigator hasta el siguiente nodo relacionado con el nombre local y el URI de espacio de nombres especificados.
public:
virtual bool MoveToNext(System::String ^ localName, System::String ^ namespaceURI);
public virtual bool MoveToNext (string localName, string namespaceURI);
abstract member MoveToNext : string * string -> bool
override this.MoveToNext : string * string -> bool
Public Overridable Function MoveToNext (localName As String, namespaceURI As String) As Boolean
Parámetros
- localName
- String
El nombre local del siguiente nodo relacionado al que se va a desplazar.
- namespaceURI
- String
El URI de espacio de nombres del siguiente nodo relacionado al que se va a desplazar.
Devoluciones
true, si el elemento XPathNavigator se desplaza correctamente al siguiente nodo relacionado; false, si no hay ningún elemento relacionado más, o bien si el elemento XPathNavigator se encuentra posicionado en un nodo de un atributo. Si es false, no cambia la posición de XPathNavigator.