Extensions.CreateNavigator Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
Zwraca
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
- nameTable
- XmlNameTable
Element XmlNameTable do użycia przez XPathNavigatorelement .
Zwraca
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.