Aracılığıyla paylaş


Extensions.CreateNavigator Yöntem

Tanım

için bir XPathNavigator XNodeoluşturur.

Aşırı Yüklemeler

CreateNavigator(XNode)

için bir XPathNavigator XNodeoluşturur.

CreateNavigator(XNode, XmlNameTable)

için bir XPathNavigator XNodeoluşturur. , XmlNameTable daha verimli XPath ifade işlemeyi etkinleştirir.

Açıklamalar

Bu yöntem tarafından döndürülen öğesini kullanarak XML ağacını XPathNavigator düzenleyemezsiniz. CanEdit özelliği döndürürfalse.

Düğüm XDocumentType için oluşturamazsınızXPathNavigator. Belge türleri XPath veri modeline katılmaz.

Ad alanı bildirimleri soldan sağa bildirilir. Buna karşılık, için XmlDocumentad alanları sağdan sola rapor edilir. Ad alanı bildirimleri XPath veri modelinde sıralanmadığından bu uyumlu bir davranıştır.

yöntemi, bu yöntem MoveToId tarafından döndürülen gezginlerde desteklenmez.

XSLT dönüşümü gerçekleştirmek için bu yöntemi kullanabilirsiniz. XML ağacı oluşturabilir, XML ağacından bir XPathNavigator oluşturabilir, yeni bir belge oluşturabilir ve yeni belgeye yazacak bir XmlWriter oluşturabilirsiniz. Ardından, ve'yi XmlWriter dönüştürmeye geçirerek XPathNavigator XSLT dönüştürmesini çağırabilirsiniz. Dönüştürme başarıyla tamamlandıktan sonra, yeni XML ağacı dönüştürmenin sonuçlarıyla doldurulur.

XSLT dönüşümü gerçekleştirmek için veya XPathNavigatorkullanabilirsinizXmlReader. İki yaklaşım farklı performans özelliklerine sahiptir. Bazı dönüştürmeler kullanırken XmlReaderdaha hızlı yürütülürken, diğerleri kullanılırken XPathNavigatordaha hızlı yürütülür. Performansla ilgili bir sorun varsa, sizin koşullarınızda hangisinin daha iyi performans göstereceğini belirlemek için her yaklaşımla denemeler yapmanız önerilir.

CreateNavigator(XNode)

için bir XPathNavigator XNodeoluşturur.

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

Parametreler

node
XNode

XNode XPath sorgularını işleyebilen.

Döndürülenler

XPathNavigator

XPathNavigator XPath sorgularını işleyebilen.

Örnekler

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)  

Bu örnek aşağıdaki çıkışı oluşturur:

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

Açıklamalar

Bu yöntem tarafından döndürülen öğesini kullanarak XML ağacını XPathNavigator düzenleyemezsiniz. CanEdit özelliği döndürürfalse.

Düğüm XDocumentType için oluşturamazsınızXPathNavigator. Belge türleri XPath veri modeline katılmaz.

Ad alanı bildirimleri soldan sağa bildirilir. Buna karşılık, ad alanları için XmlDocument sağdan sola rapor edilir. Ad alanı bildirimleri XPath veri modelinde sıralanmadığından bu uyumlu bir davranıştır.

yöntemi, bu yöntem MoveToId tarafından döndürülen gezginlerde desteklenmez.

XSLT dönüşümü gerçekleştirmek için bu yöntemi kullanabilirsiniz. XML ağacı oluşturabilir, XML ağacından bir XPathNavigator oluşturabilir, yeni bir belge oluşturabilir ve yeni belgeye yazacak bir XmlWriter oluşturabilirsiniz. Ardından, ve'yi XmlWriter dönüştürmeye geçirerek XSLT dönüşümünü XPathNavigator çağırabilirsiniz. Dönüştürme başarıyla tamamlandıktan sonra, yeni XML ağacı dönüştürmenin sonuçlarıyla doldurulur.

XSLT dönüşümü gerçekleştirmek için veya XPathNavigatorkullanabilirsinizXmlReader. İki yaklaşım farklı performans özelliklerine sahiptir. Bazı dönüştürmeler kullanırken XmlReaderdaha hızlı yürütülürken, diğerleri kullanılırken XPathNavigatordaha hızlı yürütülür. Performansla ilgili bir sorun varsa, sizin koşullarınızda hangisinin daha iyi performans göstereceğini belirlemek için her yaklaşımla denemeler yapmanız önerilir.

Şunlara uygulanır

CreateNavigator(XNode, XmlNameTable)

için bir XPathNavigator XNodeoluşturur. , XmlNameTable daha verimli XPath ifade işlemeyi etkinleştirir.

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

Parametreler

node
XNode

XPath XNode sorgusunu işleyebilen.

nameTable
XmlNameTable

XmlNameTable tarafından XPathNavigatorkullanılacak A.

Döndürülenler

XPathNavigator

XPathNavigator XPath sorgularını işleyebilen.

Açıklamalar

Bu yöntem tarafından döndürülen öğesini kullanarak XML ağacını XPathNavigator düzenleyemezsiniz. CanEdit özelliği döndürürfalse.

Düğüm XDocumentType için oluşturamazsınızXPathNavigator. Belge türleri XPath veri modeline katılmaz.

Ad alanı bildirimleri soldan sağa bildirilir. Buna karşılık, ad alanları için XmlDocument sağdan sola rapor edilir. Ad alanı bildirimleri XPath veri modelinde sıralanmadığından bu uyumlu bir davranıştır.

yöntemi, bu yöntem MoveToId tarafından döndürülen gezginlerde desteklenmez.

oluşturmak XPathNavigatoriçin bu yöntemle bir XmlNameTable kullanırsanız, XPath ifadelerini değerlendirirken daha iyi performans elde edersiniz.

Şunlara uygulanır