XPathNavigator.Prefix Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
En cas de substitution dans une classe dérivée, obtient le préfixe de l'espace de noms associé au nœud actuel.
public:
abstract property System::String ^ Prefix { System::String ^ get(); };
public abstract string Prefix { get; }
member this.Prefix : string
Public MustOverride ReadOnly Property Prefix As String
Valeur de propriété
String qui contient le préfixe de l’espace de noms associé au nœud actuel.
Exemples
L’exemple suivant itère sur l’arborescence de nœuds de manière récursive et affiche des informations sur Element les nœuds et Text .
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
L'exemple prend le fichier books.xml
comme entrée.
<?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>
Remarques
La Prefix propriété obtient le préfixe d’espace de noms associé au nœud actuel. Par exemple, la Prefix propriété retourne bk
pour l’élément <bk:book>
. S’il n’existe pas de préfixe ou si le XPathNodeType du nœud actuel n’est pas Element ou Attribute, la Prefix propriété retourne String.Empty.