Extensions.CreateNavigator 메서드

정의

XPathNavigator에 대해 XNode를 만듭니다.Creates an XPathNavigator for an XNode.

오버로드

CreateNavigator(XNode)

XPathNavigator에 대해 XNode를 만듭니다.Creates an XPathNavigator for an XNode.

CreateNavigator(XNode, XmlNameTable)

XPathNavigator에 대해 XNode를 만듭니다.Creates an XPathNavigator for an XNode. XmlNameTable을 사용하면 보다 효율적으로 XPath 식을 처리할 수 있습니다.The XmlNameTable enables more efficient XPath expression processing.

설명

이 메서드에서 반환 된를 사용 하 여 XML 트리를 편집할 수 없습니다 XPathNavigator .You cannot edit the XML tree by using the XPathNavigator that is returned by this method. CanEdit 속성이 false를 반환합니다.The CanEdit property returns false.

노드에 대 한을 만들 수 없습니다 XPathNavigator XDocumentType .You cannot create an XPathNavigator for a XDocumentType node. 문서 형식은 XPath 데이터 모델에 참여 하지 않습니다.Document types do not participate in the XPath data model.

네임 스페이스 선언은 왼쪽에서 오른쪽으로 보고 됩니다.Namespace declarations are reported from left to right. 반면에 XmlDocument 네임 스페이스는 오른쪽에서 왼쪽으로 보고 됩니다.In contrast, for XmlDocument namespaces are reported from right to left. 이는 네임 스페이스 선언이 XPath 데이터 모델에서 순서가 지정 되지 않기 때문에 규칙에 따라 동작 합니다.This is conformant behavior because namespace declarations are not ordered in the XPath data model.

메서드는 MoveToId 이 메서드가 반환 하는 탐색기에 대해 지원 되지 않습니다.The method MoveToId is not supported for navigators that are returned by this method.

이 메서드를 사용 하 여 XSLT 변환을 수행할 수 있습니다.You can use this method to perform an XSLT transformation. Xml 트리를 만들고 XPathNavigator xml 트리에서를 만든 다음 새 문서를 만들고 XmlWriter 새 문서에 쓸를 만들 수 있습니다.You can create an XML tree, create an XPathNavigator from the XML tree, create a new document, and create a XmlWriter that will write into the new document. 그런 다음 XPathNavigatorXmlWriter를 변환에 전달하여 XSLT 변환을 호출할 수 있습니다.Then, you can invoke the XSLT transformation, passing the XPathNavigator and XmlWriter to the transformation. 변환이 성공적으로 완료된 후 새 XML 트리가 변환의 결과로 채워집니다.After the transformation successfully completes, the new XML tree is populated with the results of the transformation.

XSLT 변환을 수행 하려면 또는 중 하나를 사용할 수 있습니다 XmlReader XPathNavigator .To perform an XSLT transformation, you can use either an XmlReader or an XPathNavigator. 두 방법의 성능 특성은 서로 다릅니다.The two approaches have different performance characteristics. 를 사용 하는 경우 일부 변환은 더 빠르게 실행 되 XmlReader 고 다른 변환은를 사용할 때 더 빠르게 실행 됩니다 XPathNavigator .Some transformations will execute faster when using an XmlReader, and others will execute faster when using a XPathNavigator. 성능이 중요 한 경우에는 각 방법을 시험해 보고 사용자 환경에서 더 잘 수행 되는 방식을 결정 하는 것이 좋습니다.If performance is a concern, we recommend that you experiment with each approach to determine which will perform better in your circumstances.

            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 XDocument(  
    new XElement("Parent",  
        new XElement("Child1", "Child1 data"),  
        new XElement("Child2", "Child2 data")  
    )  
);  

XDocument newTree = new XDocument();  
using (XmlWriter writer = newTree.CreateWriter()) {  
    // Load the style sheet.  
    XslCompiledTransform xslt = new XslCompiledTransform();  
    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)  

이 예제는 다음과 같은 출력을 생성합니다.This example produces the following output:

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

CreateNavigator(XNode)

XPathNavigator에 대해 XNode를 만듭니다.Creates an XPathNavigator for an 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

매개 변수

node
XNode

XPath 쿼리를 처리할 수 있는 XNode입니다.An XNode that can process XPath queries.

반환

XPathNavigator

XPath 쿼리를 처리할 수 있는 XPathNavigator입니다.An XPathNavigator that can process XPath queries.

예제

                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 XDocument(  
    new XElement("Parent",  
        new XElement("Child1", "Child1 data"),  
        new XElement("Child2", "Child2 data")  
    )  
);  

XDocument newTree = new XDocument();  
using (XmlWriter writer = newTree.CreateWriter()) {  
    // Load the style sheet.  
    XslCompiledTransform xslt = new XslCompiledTransform();  
    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)  

이 예제는 다음과 같은 출력을 생성합니다.This example produces the following output:

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

설명

이 메서드에서 반환 된를 사용 하 여 XML 트리를 편집할 수 없습니다 XPathNavigator .You cannot edit the XML tree by using the XPathNavigator that is returned by this method. CanEdit 속성이 false를 반환합니다.The CanEdit property returns false.

노드에 대 한을 만들 수 없습니다 XPathNavigator XDocumentType .You cannot create an XPathNavigator for a XDocumentType node. 문서 형식은 XPath 데이터 모델에 참여 하지 않습니다.Document types do not participate in the XPath data model.

네임 스페이스 선언은 왼쪽에서 오른쪽으로 보고 됩니다.Namespace declarations are reported from left to right. 반면에 XmlDocument 네임 스페이스는 오른쪽에서 왼쪽으로 보고 됩니다.In contrast, for XmlDocument namespaces are reported from right to left. 이는 네임 스페이스 선언이 XPath 데이터 모델에서 순서가 지정 되지 않기 때문에 규칙에 따라 동작 합니다.This is conformant behavior because namespace declarations are not ordered in the XPath data model.

메서드는 MoveToId 이 메서드가 반환 하는 탐색기에 대해 지원 되지 않습니다.The method MoveToId is not supported for navigators that are returned by this method.

이 메서드를 사용 하 여 XSLT 변환을 수행할 수 있습니다.You can use this method to perform an XSLT transformation. Xml 트리를 만들고 XPathNavigator xml 트리에서를 만든 다음 새 문서를 만들고 XmlWriter 새 문서에 쓸를 만들 수 있습니다.You can create an XML tree, create an XPathNavigator from the XML tree, create a new document, and create a XmlWriter that will write into the new document. 그런 다음 및를 변환에 전달 하 여 XSLT 변환을 호출할 수 있습니다 XPathNavigator XmlWriter .Then, you can invoke the XSLT transformation, passing the XPathNavigator and XmlWriter to the transform. 변환이 성공적으로 완료된 후 새 XML 트리가 변환의 결과로 채워집니다.After the transformation successfully completes, the new XML tree is populated with the results of the transformation.

XSLT 변환을 수행 하려면 또는 중 하나를 사용할 수 있습니다 XmlReader XPathNavigator .To perform an XSLT transformation, you can use either an XmlReader or an XPathNavigator. 두 방법의 성능 특성은 서로 다릅니다.The two approaches have different performance characteristics. 를 사용 하는 경우 일부 변환은 더 빠르게 실행 되 XmlReader 고 다른 변환은를 사용할 때 더 빠르게 실행 됩니다 XPathNavigator .Some transformations will execute faster when using an XmlReader, and others will execute faster when using a XPathNavigator. 성능이 중요 한 경우에는 각 방법을 시험해 보고 사용자 환경에서 더 잘 수행 되는 방식을 결정 하는 것이 좋습니다.If performance is a concern, we recommend that you experiment with each approach to determine which will perform better in your circumstances.

적용 대상

CreateNavigator(XNode, XmlNameTable)

XPathNavigator에 대해 XNode를 만듭니다.Creates an XPathNavigator for an XNode. XmlNameTable을 사용하면 보다 효율적으로 XPath 식을 처리할 수 있습니다.The XmlNameTable enables more efficient XPath expression processing.

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입니다.An XNode that can process an XPath query.

nameTable
XmlNameTable

XmlNameTable에 사용할 XPathNavigator입니다.A XmlNameTable to be used by XPathNavigator.

반환

XPathNavigator

XPath 쿼리를 처리할 수 있는 XPathNavigator입니다.An XPathNavigator that can process XPath queries.

설명

이 메서드에서 반환 된를 사용 하 여 XML 트리를 편집할 수 없습니다 XPathNavigator .You cannot edit the XML tree using the XPathNavigator that is returned by this method. CanEdit 속성이 false를 반환합니다.The CanEdit property returns false.

노드에 대 한을 만들 수 없습니다 XPathNavigator XDocumentType .You cannot create an XPathNavigator for a XDocumentType node. 문서 형식은 XPath 데이터 모델에 참여 하지 않습니다.Document types do not participate in the XPath data model.

네임 스페이스 선언은 왼쪽에서 오른쪽으로 보고 됩니다.Namespace declarations are reported from left to right. 반면에 XmlDocument 네임 스페이스는 오른쪽에서 왼쪽으로 보고 됩니다.In contrast, for XmlDocument namespaces are reported from right to left. 이는 네임 스페이스 선언이 XPath 데이터 모델에서 순서가 지정 되지 않기 때문에 규칙에 따라 동작 합니다.This is conformant behavior because namespace declarations are not ordered in the XPath data model.

메서드는 MoveToId 이 메서드가 반환 하는 탐색기에 대해 지원 되지 않습니다.The method MoveToId is not supported for navigators that are returned by this method.

이 메서드에서를 사용 하 여를 XmlNameTable 만드는 경우 XPathNavigator XPath 식을 평가할 때 더 나은 성능을 얻을 수 있습니다.If you use an XmlNameTable with this method to create the XPathNavigator, you will get better performance when evaluating XPath expressions.

적용 대상