次の方法で共有


Extensions.CreateNavigator メソッド

定義

XPathNavigatorXNode を作成します。

オーバーロード

CreateNavigator(XNode)

XPathNavigatorXNode を作成します。

CreateNavigator(XNode, XmlNameTable)

XPathNavigatorXNode を作成します。 XmlNameTable を使用すると、XPath 式をより効率的に処理できます。

注釈

このメソッドから返される XML ツリーを XPathNavigator 使用して、XML ツリーを編集することはできません。 CanEdit プロパティは、false を返します。

ノード用XDocumentTypeXPathNavigator作成することはできません。 ドキュメントの種類は XPath データ モデルには含まれません。

名前空間宣言は左から右に報告されます。 これに対し、 XmlDocument名前空間は右から左に報告されます。 名前空間宣言は XPath データ モデルでは順序付けされないため、これは準拠した動作です。

このメソッド MoveToId によって返されるナビゲーターでは、このメソッドはサポートされていません。

このメソッドを使用して、XSLT 変換を実行できます。 XML ツリーを作成し、XML ツリーから作成 XPathNavigator し、新しいドキュメントを作成し、新しいドキュメントに書き込むドキュメントを作成 XmlWriter できます。 次に、XSLT 変換を呼び出し、変換処理に XPathNavigator および XmlWriter を渡すことができます。 変換が正常に完了すると、新しい XML ツリーに変換結果が挿入されます。

XSLT 変換を実行するには、次のいずれかをXmlReaderXPathNavigator使用できます。 この 2 つの方法では、パフォーマンス特性が異なります。 一部の変換は、使用すると高速にXmlReader実行され、他の変換は.XPathNavigator パフォーマンスに問題がある場合は、各アプローチを試して、状況に適したパフォーマンスを判断することをお勧めします。

CreateNavigator(XNode)

XPathNavigatorXNode を作成します。

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

パラメーター

node
XNode

XPath クエリを処理できる XNode

戻り値

XPathNavigator

XPath クエリを処理できる XPathNavigator

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)  

この例を実行すると、次の出力が生成されます。

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

注釈

このメソッドから返される XML ツリーを使用して、XML ツリーを XPathNavigator 編集することはできません。 CanEdit プロパティは、false を返します。

ノード用XDocumentTypeXPathNavigator作成することはできません。 ドキュメントの種類は XPath データ モデルには含まれません。

名前空間宣言は左から右に報告されます。 これに対し、名前空間の場合 XmlDocument は、右から左に報告されます。 名前空間宣言は XPath データ モデルでは順序付けされないため、これは準拠した動作です。

このメソッド MoveToId によって返されるナビゲーターでは、このメソッドはサポートされていません。

このメソッドを使用して、XSLT 変換を実行できます。 XML ツリーを作成し、XML ツリーから作成 XPathNavigator し、新しいドキュメントを作成し、新しいドキュメントに書き込むドキュメントを作成 XmlWriter できます。 その後、XSLT 変換を呼び出し、変換に XPathNavigatorXmlWriter すことができます。 変換が正常に完了すると、新しい XML ツリーに変換結果が挿入されます。

XSLT 変換を実行するには、次のいずれかをXmlReaderXPathNavigator使用できます。 この 2 つの方法では、パフォーマンス特性が異なります。 一部の変換は、使用すると高速にXmlReader実行され、他の変換は.XPathNavigator パフォーマンスに問題がある場合は、各アプローチを試して、状況に適したパフォーマンスを判断することをお勧めします。

適用対象

CreateNavigator(XNode, XmlNameTable)

XPathNavigatorXNode を作成します。 XmlNameTable を使用すると、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

パラメーター

node
XNode

XPath クエリを処理できる XNode

nameTable
XmlNameTable

XmlNameTable で使用する XPathNavigator

戻り値

XPathNavigator

XPath クエリを処理できる XPathNavigator

注釈

このメソッドによって返される XML ツリーを XPathNavigator 使用して編集することはできません。 CanEdit プロパティは、false を返します。

ノード用XDocumentTypeXPathNavigator作成することはできません。 ドキュメントの種類は XPath データ モデルには含まれません。

名前空間宣言は左から右に報告されます。 これに対し、名前空間の場合 XmlDocument は、右から左に報告されます。 名前空間宣言は XPath データ モデルでは順序付けされないため、これは準拠した動作です。

このメソッド MoveToId によって返されるナビゲーターでは、このメソッドはサポートされていません。

このメソッドを XmlNameTable 使用して作成 XPathNavigatorすると、XPath 式を評価するときにパフォーマンスが向上します。

適用対象