Aracılığıyla paylaş


Extensions.CreateNavigator Yöntem

Tanım

için bir XPathNavigatorXNodeoluşturur.

Aşırı Yüklemeler

Name Description
CreateNavigator(XNode)

için bir XPathNavigatorXNodeoluşturur.

CreateNavigator(XNode, XmlNameTable)

için bir XPathNavigatorXNodeoluş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 için XDocumentType 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 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. BIR XML ağacı oluşturabilir, XML ağacından bir XPathNavigator oluşturabilir, yeni bir belge oluşturabilir ve yeni belgeye yazacak bir XmlWriter belge 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üşümün 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ırken XPathNavigatordaha hızlı yürütülür. Performans önemliyse, hangi yaklaşımın sizin koşullarınızda daha iyi performans göstereceğini belirlemek için her yaklaşımı denemenizi öneririz.

CreateNavigator(XNode)

Kaynak:
XNodeNavigator.cs
Kaynak:
XNodeNavigator.cs
Kaynak:
XNodeNavigator.cs
Kaynak:
XNodeNavigator.cs
Kaynak:
XNodeNavigator.cs

için bir XPathNavigatorXNodeoluş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 bir.

Döndürülenler

XPathNavigator XPath sorgularını işleyebilen bir.

Ö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 için XDocumentType 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 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. BIR XML ağacı oluşturabilir, XML ağacından bir XPathNavigator oluşturabilir, yeni bir belge oluşturabilir ve yeni belgeye yazacak bir XmlWriter belge 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üşümün 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ırken XPathNavigatordaha hızlı yürütülür. Performans önemliyse, hangi yaklaşımın sizin koşullarınızda daha iyi performans göstereceğini belirlemek için her yaklaşımı denemenizi öneririz.

Şunlara uygulanır

CreateNavigator(XNode, XmlNameTable)

Kaynak:
XNodeNavigator.cs
Kaynak:
XNodeNavigator.cs
Kaynak:
XNodeNavigator.cs
Kaynak:
XNodeNavigator.cs
Kaynak:
XNodeNavigator.cs

için bir XPathNavigatorXNodeoluş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 XPath sorgularını işleyebilen bir.

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 için XDocumentType 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 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 bir performans elde edersiniz.

Şunlara uygulanır