Extensions.CreateNavigator Metoda

Definicja

Tworzy element XPathNavigator dla elementu XNode.

Przeciążenia

CreateNavigator(XNode)

Tworzy element XPathNavigator dla elementu XNode.

CreateNavigator(XNode, XmlNameTable)

Tworzy element XPathNavigator dla elementu XNode. Umożliwia XmlNameTable bardziej wydajne przetwarzanie wyrażeń XPath.

Uwagi

Nie można edytować drzewa XML przy użyciu XPathNavigator elementu zwróconego przez tę metodę. Właściwość CanEdit zwraca wartość false.

Nie można utworzyć XPathNavigator elementu dla węzła XDocumentType . Typy dokumentów nie uczestniczą w modelu danych XPath.

Deklaracje przestrzeni nazw są zgłaszane od lewej do prawej. Natomiast w przypadku XmlDocumentprzestrzeni nazw są zgłaszane od prawej do lewej. Jest to zgodne zachowanie, ponieważ deklaracje przestrzeni nazw nie są uporządkowane w modelu danych XPath.

Metoda MoveToId nie jest obsługiwana w przypadku nawigatorów zwracanych przez tę metodę.

Za pomocą tej metody można wykonać przekształcenie XSLT. Możesz utworzyć drzewo XML, utworzyć element XPathNavigator na podstawie drzewa XML, utworzyć nowy dokument i utworzyć obiekt XmlWriter , który zapisze w nowym dokumencie. Następnie można wywołać przekształcenie XSLT, przekazując XPathNavigator elementy i XmlWriter do przekształcenia. Po pomyślnym zakończeniu transformacji nowe drzewo XML zostanie wypełnione wynikami przekształcenia.

Aby wykonać transformację XSLT, możesz użyć symbolu XmlReader XPathNavigatorlub . Te dwa podejścia mają różne cechy wydajności. Niektóre przekształcenia będą wykonywane szybciej w przypadku korzystania z XmlReaderelementu , a inne będą wykonywane szybciej podczas korzystania z elementu XPathNavigator. Jeśli wydajność jest problemem, zalecamy eksperymentowanie z każdym podejściem, aby określić, które będzie działać lepiej w Twoich okolicznościach.

CreateNavigator(XNode)

Tworzy element XPathNavigator dla elementu 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

Parametry

node
XNode

Element XNode , który może przetwarzać zapytania XPath.

Zwraca

XPathNavigator

Element XPathNavigator , który może przetwarzać zapytania XPath.

Przykłady

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)  

Ten przykład generuje następujące wyniki:

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

Uwagi

Nie można edytować drzewa XML przy użyciu XPathNavigator elementu , który jest zwracany przez tę metodę. Właściwość CanEdit zwraca wartość false.

Nie można utworzyć XPathNavigator elementu dla węzła XDocumentType . Typy dokumentów nie uczestniczą w modelu danych XPath.

Deklaracje przestrzeni nazw są zgłaszane od lewej do prawej. Natomiast w XmlDocument przypadku przestrzeni nazw są zgłaszane od prawej do lewej. Jest to zgodne zachowanie, ponieważ deklaracje przestrzeni nazw nie są uporządkowane w modelu danych XPath.

Metoda MoveToId nie jest obsługiwana w przypadku nawigatorów zwracanych przez tę metodę.

Za pomocą tej metody można wykonać przekształcenie XSLT. Możesz utworzyć drzewo XML, utworzyć element XPathNavigator na podstawie drzewa XML, utworzyć nowy dokument i utworzyć obiekt XmlWriter , który zapisze w nowym dokumencie. Następnie można wywołać przekształcenie XSLT, przekazując XPathNavigator elementy i XmlWriter do przekształcenia. Po pomyślnym zakończeniu transformacji nowe drzewo XML zostanie wypełnione wynikami przekształcenia.

Aby wykonać transformację XSLT, możesz użyć symbolu XmlReader XPathNavigatorlub . Te dwa podejścia mają różne cechy wydajności. Niektóre przekształcenia będą wykonywane szybciej w przypadku korzystania z XmlReaderelementu , a inne będą wykonywane szybciej podczas korzystania z elementu XPathNavigator. Jeśli wydajność jest problemem, zalecamy eksperymentowanie z każdym podejściem, aby określić, które będzie działać lepiej w Twoich okolicznościach.

Dotyczy

CreateNavigator(XNode, XmlNameTable)

Tworzy element XPathNavigator dla elementu XNode. Umożliwia XmlNameTable bardziej wydajne przetwarzanie wyrażeń XPath.

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

Parametry

node
XNode

Element XNode , który może przetworzyć zapytanie XPath.

nameTable
XmlNameTable

Element XmlNameTable do użycia przez XPathNavigatorelement .

Zwraca

XPathNavigator

Element XPathNavigator , który może przetwarzać zapytania XPath.

Uwagi

Nie można edytować drzewa XML przy użyciu XPathNavigator elementu, który jest zwracany przez tę metodę. Właściwość CanEdit zwraca wartość false.

Nie można utworzyć XPathNavigator elementu dla węzła XDocumentType . Typy dokumentów nie uczestniczą w modelu danych XPath.

Deklaracje przestrzeni nazw są zgłaszane od lewej do prawej. Natomiast w XmlDocument przypadku przestrzeni nazw są zgłaszane od prawej do lewej. Jest to zgodne zachowanie, ponieważ deklaracje przestrzeni nazw nie są uporządkowane w modelu danych XPath.

Metoda MoveToId nie jest obsługiwana w przypadku nawigatorów zwracanych przez tę metodę.

Jeśli używasz elementu XmlNameTable z tą metodą do utworzenia XPathNavigatorelementu , uzyskasz lepszą wydajność podczas oceniania wyrażeń XPath.

Dotyczy