Extensions.CreateNavigator Metod

Definition

Skapar en XPathNavigator för en XNode.

Överlagringar

Name Description
CreateNavigator(XNode)

Skapar en XPathNavigator för en XNode.

CreateNavigator(XNode, XmlNameTable)

Skapar en XPathNavigator för en XNode. Möjliggör XmlNameTable effektivare XPath-uttrycksbearbetning.

Kommentarer

Du kan inte redigera XML-trädet med hjälp XPathNavigator av den som returneras av den här metoden. Egenskapen CanEdit returnerar false.

Du kan inte skapa en XPathNavigator för en XDocumentType nod. Dokumenttyper deltar inte i XPath-datamodellen.

Namnområdesdeklarationer rapporteras från vänster till höger. För rapporteras däremot XmlDocumentnamnrymder från höger till vänster. Det här är ett konformt beteende eftersom namnområdesdeklarationer inte sorteras i XPath-datamodellen.

Metoden MoveToId stöds inte för navigatörer som returneras av den här metoden.

Du kan använda den här metoden för att utföra en XSLT-transformering. Du kan skapa ett XML-träd, skapa ett XPathNavigator från XML-trädet, skapa ett nytt dokument och skapa ett XmlWriter som ska skriva till det nya dokumentet. Sedan kan du anropa XSLT-omvandlingen och skicka XPathNavigator och XmlWriter till transformeringen. När omvandlingen har slutförts fylls det nya XML-trädet i med resultatet av omvandlingen.

Om du vill utföra en XSLT-transformering kan du använda antingen en XmlReader eller en XPathNavigator. De två metoderna har olika prestandaegenskaper. Vissa transformeringar körs snabbare när du använder en XmlReader, och andra körs snabbare när du använder en XPathNavigator. Om prestanda är ett problem rekommenderar vi att du experimenterar med varje metod för att avgöra vilken som presterar bättre under dina omständigheter.

CreateNavigator(XNode)

Källa:
XNodeNavigator.cs
Källa:
XNodeNavigator.cs
Källa:
XNodeNavigator.cs
Källa:
XNodeNavigator.cs
Källa:
XNodeNavigator.cs

Skapar en XPathNavigator för en 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

Parametrar

node
XNode

En XNode som kan bearbeta XPath-frågor.

Returer

En XPathNavigator som kan bearbeta XPath-frågor.

Exempel

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)

Det här exemplet genererar följande utdata:

<Root>
  <C1>Child1 data</C1>
  <C2>Child2 data</C2>
</Root>

Kommentarer

Du kan inte redigera XML-trädet med hjälp av den XPathNavigator som returneras av den här metoden. Egenskapen CanEdit returnerar false.

Du kan inte skapa en XPathNavigator för en XDocumentType nod. Dokumenttyper deltar inte i XPath-datamodellen.

Namnområdesdeklarationer rapporteras från vänster till höger. För namnområden rapporteras däremot XmlDocument från höger till vänster. Det här är ett konformt beteende eftersom namnområdesdeklarationer inte sorteras i XPath-datamodellen.

Metoden MoveToId stöds inte för navigatörer som returneras av den här metoden.

Du kan använda den här metoden för att utföra en XSLT-transformering. Du kan skapa ett XML-träd, skapa ett XPathNavigator från XML-trädet, skapa ett nytt dokument och skapa ett XmlWriter som ska skriva till det nya dokumentet. Sedan kan du anropa XSLT-omvandlingen och skicka XPathNavigator och XmlWriter till transformeringen. När omvandlingen har slutförts fylls det nya XML-trädet i med resultatet av omvandlingen.

Om du vill utföra en XSLT-transformering kan du använda antingen en XmlReader eller en XPathNavigator. De två metoderna har olika prestandaegenskaper. Vissa transformeringar körs snabbare när du använder en XmlReader, och andra körs snabbare när du använder en XPathNavigator. Om prestanda är ett problem rekommenderar vi att du experimenterar med varje metod för att avgöra vilken som presterar bättre under dina omständigheter.

Gäller för

CreateNavigator(XNode, XmlNameTable)

Källa:
XNodeNavigator.cs
Källa:
XNodeNavigator.cs
Källa:
XNodeNavigator.cs
Källa:
XNodeNavigator.cs
Källa:
XNodeNavigator.cs

Skapar en XPathNavigator för en XNode. Möjliggör XmlNameTable effektivare XPath-uttrycksbearbetning.

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

Parametrar

node
XNode

En XNode som kan bearbeta en XPath-fråga.

nameTable
XmlNameTable

A XmlNameTable som ska användas av XPathNavigator.

Returer

En XPathNavigator som kan bearbeta XPath-frågor.

Kommentarer

Du kan inte redigera XML-trädet med hjälp XPathNavigator av den som returneras av den här metoden. Egenskapen CanEdit returnerar false.

Du kan inte skapa en XPathNavigator för en XDocumentType nod. Dokumenttyper deltar inte i XPath-datamodellen.

Namnområdesdeklarationer rapporteras från vänster till höger. För namnområden rapporteras däremot XmlDocument från höger till vänster. Det här är ett konformt beteende eftersom namnområdesdeklarationer inte sorteras i XPath-datamodellen.

Metoden MoveToId stöds inte för navigatörer som returneras av den här metoden.

Om du använder en XmlNameTable med den här metoden för att skapa XPathNavigatorfår du bättre prestanda när du utvärderar XPath-uttryck.

Gäller för