Extensions.CreateNavigator Méthode
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.
Crée un XPathNavigator pour un XNode.
Surcharges
CreateNavigator(XNode) |
Crée un XPathNavigator pour un XNode. |
CreateNavigator(XNode, XmlNameTable) |
Crée un XPathNavigator pour un XNode. Le XmlNameTable permet un traitement d'expression XPath plus efficace. |
Remarques
Vous ne pouvez pas modifier l’arborescence XML à l’aide de la XPathNavigator méthode retournée par cette méthode. La propriété CanEdit retourne la valeur false
.
Vous ne pouvez pas créer un XPathNavigator XDocumentType nœud. Les types de documents ne participent pas au modèle de données XPath.
Les déclarations d’espace de noms sont signalées de gauche à droite. En revanche, pour XmlDocument, les espaces de noms sont signalés de droite à gauche. Il s’agit d’un comportement conforme, car les déclarations d’espace de noms ne sont pas ordonnées dans le modèle de données XPath.
La méthode MoveToId n’est pas prise en charge pour les navigateurs retournés par cette méthode.
Vous pouvez utiliser cette méthode pour effectuer une transformation XSLT. Vous pouvez créer une arborescence XML, créer une XPathNavigator arborescence XML à partir de l’arborescence XML, créer un document et créer un XmlWriter document qui sera écrit dans le nouveau document. Ensuite, vous pouvez appeler la transformation XSLT, en passant le XPathNavigator et le XmlWriter à la transformation. Une fois la transformation terminée avec succès, la nouvelle arborescence XML est remplie avec les résultats de la transformation.
Pour effectuer une transformation XSLT, vous pouvez utiliser un ou un XmlReader XPathNavigator. Les deux approches ont des caractéristiques de performances différentes. Certaines transformations s’exécutent plus rapidement lors de l’utilisation d’un XmlReader, et d’autres s’exécutent plus rapidement lors de l’utilisation d’un XPathNavigator. Si les performances sont une préoccupation, nous vous recommandons d’expérimenter chaque approche pour déterminer qui fonctionnera mieux dans vos circonstances.
CreateNavigator(XNode)
Crée un XPathNavigator pour un XNode.
public:
[System::Runtime::CompilerServices::Extension]
static System::Xml::XPath::XPathNavigator ^ CreateNavigator(System::Xml::Linq::XNode ^ node);
public static System.Xml.XPath.XPathNavigator CreateNavigator (this System.Xml.Linq.XNode node);
static member CreateNavigator : System.Xml.Linq.XNode -> System.Xml.XPath.XPathNavigator
<Extension()>
Public Function CreateNavigator (node As XNode) As XPathNavigator
Paramètres
Retours
XPathNavigator qui peut traiter des requêtes XPath.
Exemples
using System.Xml;
using System.Xml.Linq;
using System.Xml.XPath;
using System.Xml.Xsl;
string xslMarkup = @"<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'>
<xsl:template match='/Parent'>
<Root>
<C1><xsl:value-of select='Child1'/></C1>
<C2><xsl:value-of select='Child2'/></C2>
</Root>
</xsl:template>
</xsl:stylesheet>";
XDocument xmlTree = new(
new XElement("Parent",
new XElement("Child1", "Child1 data"),
new XElement("Child2", "Child2 data")
)
);
XDocument newTree = new();
using (XmlWriter writer = newTree.CreateWriter())
{
// Load the style sheet.
XslCompiledTransform xslt = new();
xslt.Load(XmlReader.Create(new StringReader(xslMarkup)));
// Execute the transform and output the results to a writer.
xslt.Transform(xmlTree.CreateNavigator(), writer);
}
Console.WriteLine(newTree);
Dim xslMarkup As XDocument = _
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'>
<xsl:template match='/Parent'>
<Root>
<C1><xsl:value-of select='Child1'/></C1>
<C2><xsl:value-of select='Child2'/></C2>
</Root>
</xsl:template>
</xsl:stylesheet>
Dim xmlTree As XDocument = _
<?xml version='1.0'?>
<Parent>
<Child1>Child1 data</Child1>
<Child2>Child2 data</Child2>
</Parent>
Dim newTree As XDocument = New XDocument()
Using writer As XmlWriter = newTree.CreateWriter()
' Load the style sheet.
Dim xslt As XslCompiledTransform = _
New XslCompiledTransform()
xslt.Load(xslMarkup.CreateReader())
' Execute the transform and output the results to a writer.
xslt.Transform(xmlTree.CreateNavigator(), writer)
End Using
Console.WriteLine(newTree)
Cet exemple produit la sortie suivante :
<Root>
<C1>Child1 data</C1>
<C2>Child2 data</C2>
</Root>
Remarques
Vous ne pouvez pas modifier l’arborescence XML à l’aide de celle-ci XPathNavigator retournée par cette méthode. La propriété CanEdit retourne la valeur false
.
Vous ne pouvez pas créer un XPathNavigator XDocumentType nœud. Les types de documents ne participent pas au modèle de données XPath.
Les déclarations d’espace de noms sont signalées de gauche à droite. En revanche, les XmlDocument espaces de noms sont signalés de droite à gauche. Il s’agit d’un comportement conforme, car les déclarations d’espace de noms ne sont pas ordonnées dans le modèle de données XPath.
La méthode MoveToId n’est pas prise en charge pour les navigateurs retournés par cette méthode.
Vous pouvez utiliser cette méthode pour effectuer une transformation XSLT. Vous pouvez créer une arborescence XML, créer une XPathNavigator arborescence XML à partir de l’arborescence XML, créer un document et créer un XmlWriter document qui sera écrit dans le nouveau document. Ensuite, vous pouvez appeler la transformation XSLT, passer la XPathNavigator transformation et XmlWriter la transformer. Une fois la transformation terminée avec succès, la nouvelle arborescence XML est remplie avec les résultats de la transformation.
Pour effectuer une transformation XSLT, vous pouvez utiliser un ou un XmlReader XPathNavigator. Les deux approches ont des caractéristiques de performances différentes. Certaines transformations s’exécutent plus rapidement lors de l’utilisation d’un XmlReader, et d’autres s’exécutent plus rapidement lors de l’utilisation d’un XPathNavigator. Si les performances sont une préoccupation, nous vous recommandons d’expérimenter chaque approche pour déterminer qui fonctionnera mieux dans vos circonstances.
S’applique à
CreateNavigator(XNode, XmlNameTable)
Crée un XPathNavigator pour un XNode. Le XmlNameTable permet un traitement d'expression XPath plus efficace.
public:
[System::Runtime::CompilerServices::Extension]
static System::Xml::XPath::XPathNavigator ^ CreateNavigator(System::Xml::Linq::XNode ^ node, System::Xml::XmlNameTable ^ nameTable);
public static System.Xml.XPath.XPathNavigator CreateNavigator (this System.Xml.Linq.XNode node, System.Xml.XmlNameTable? nameTable);
public static System.Xml.XPath.XPathNavigator CreateNavigator (this System.Xml.Linq.XNode node, System.Xml.XmlNameTable nameTable);
static member CreateNavigator : System.Xml.Linq.XNode * System.Xml.XmlNameTable -> System.Xml.XPath.XPathNavigator
<Extension()>
Public Function CreateNavigator (node As XNode, nameTable As XmlNameTable) As XPathNavigator
Paramètres
- nameTable
- XmlNameTable
XmlNameTable que doit utiliser XPathNavigator.
Retours
XPathNavigator qui peut traiter des requêtes XPath.
Remarques
Vous ne pouvez pas modifier l’arborescence XML à l’aide de celle-ci XPathNavigator retournée par cette méthode. La propriété CanEdit retourne la valeur false
.
Vous ne pouvez pas créer un XPathNavigator XDocumentType nœud. Les types de documents ne participent pas au modèle de données XPath.
Les déclarations d’espace de noms sont signalées de gauche à droite. En revanche, les XmlDocument espaces de noms sont signalés de droite à gauche. Il s’agit d’un comportement conforme, car les déclarations d’espace de noms ne sont pas ordonnées dans le modèle de données XPath.
La méthode MoveToId n’est pas prise en charge pour les navigateurs retournés par cette méthode.
Si vous utilisez une XmlNameTable méthode avec cette méthode pour créer le , vous obtiendrez de meilleures performances lors de l’évaluation XPathNavigatordes expressions XPath.