XPathNavigator.MoveToNext Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Přesune XPathNavigator na další uzel na stejné úrovni aktuálního uzlu.
Přetížení
MoveToNext() |
Při přepsání v odvozené třídě přesune XPathNavigator objekt na další uzel na stejné úrovni aktuálního uzlu. |
MoveToNext(XPathNodeType) |
Přesune XPathNavigator na další uzel na stejné úrovni aktuálního uzlu, který odpovídá zadanému XPathNodeType uzlu. |
MoveToNext(String, String) |
Přesune XPathNavigator na další uzel na stejné úrovni se zadaným místním názvem a identifikátorem URI oboru názvů. |
MoveToNext()
- Zdroj:
- XPathNavigator.cs
- Zdroj:
- XPathNavigator.cs
- Zdroj:
- XPathNavigator.cs
Při přepsání v odvozené třídě přesune XPathNavigator objekt na další uzel na stejné úrovni aktuálního uzlu.
public:
abstract bool MoveToNext();
public abstract bool MoveToNext ();
abstract member MoveToNext : unit -> bool
Public MustOverride Function MoveToNext () As Boolean
Návraty
true
XPathNavigator pokud se úspěšně přesune na další uzel na stejné úrovni, v opačném případě, false
pokud neexistují žádné další na stejné úrovni nebo pokud XPathNavigator je aktuálně umístěn na uzlu atributu. Pokud false
, pozice je XPathNavigator beze změny.
Příklady
Následující příklad rekurzivně prochází strom uzlu a zobrazuje informace o uzlech elementů a textu.
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
V příkladu se books.xml
soubor používá jako vstup.
<?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>
Viz také
Platí pro
MoveToNext(XPathNodeType)
- Zdroj:
- XPathNavigator.cs
- Zdroj:
- XPathNavigator.cs
- Zdroj:
- XPathNavigator.cs
Přesune XPathNavigator na další uzel na stejné úrovni aktuálního uzlu, který odpovídá zadanému XPathNodeType uzlu.
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
Parametry
- type
- XPathNodeType
Uzel XPathNodeType na stejné úrovni, na který se má přesunout.
Návraty
true
XPathNavigator pokud se úspěšně přesune na další uzel na stejné úrovni, v opačném případě, false
pokud neexistují žádné další na stejné úrovni nebo pokud XPathNavigator je aktuálně umístěn na uzlu atributu. Pokud false
, pozice je XPathNavigator beze změny.
Poznámky
Vrácená hodnota MoveToNext metody závisí na XPathNodeType aktuálním uzlu a XPathNodeType na dalším uzlu na stejné úrovni, na který se má přesunout.
Následující tabulka uvádí různé XPathNodeType uzly a uzly na stejné úrovni, na které se můžou přesunout.
XPathNodeType aktuálního uzlu | XPathNodeType uzlu na stejné úrovni |
---|---|
Element | Element, ProcessingInstruction, Commentnebo Text. |
Text | Element, ProcessingInstruction, Commentnebo Text. |
ProcessingInstruction | Element, ProcessingInstruction, Commentnebo Text. |
Comment | Element, ProcessingInstruction, Commentnebo Text. |
Všechny ostatní XPathNodeType hodnoty | Žádné |
Platí pro
MoveToNext(String, String)
- Zdroj:
- XPathNavigator.cs
- Zdroj:
- XPathNavigator.cs
- Zdroj:
- XPathNavigator.cs
Přesune XPathNavigator na další uzel na stejné úrovni se zadaným místním názvem a identifikátorem URI oboru názvů.
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
Parametry
- localName
- String
Místní název dalšího uzlu na stejné úrovni, na který se má přesunout.
- namespaceURI
- String
Identifikátor URI oboru názvů dalšího uzlu na stejné úrovni, na který se má přesunout.
Návraty
true
XPathNavigator pokud je úspěšný přesun na další uzel na stejné úrovni, false
pokud neexistují žádné další na stejné úrovni, nebo pokud XPathNavigator je aktuálně umístěn na uzlu atributu. Pokud false
, pozice je XPathNavigator beze změny.