XNode.CreateReader 메서드

정의

이 노드에 대한 XmlReader를 만듭니다.Creates an XmlReader for this node.

오버로드

CreateReader()

이 노드에 대한 XmlReader를 만듭니다.Creates an XmlReader for this node.

CreateReader(ReaderOptions)

readerOptions 매개 변수에서 지정된 옵션을 사용하여 XmlReader를 만듭니다.Creates an XmlReader with the options specified by the readerOptions parameter.

CreateReader()

이 노드에 대한 XmlReader를 만듭니다.Creates an XmlReader for this node.

public:
 System::Xml::XmlReader ^ CreateReader();
public System.Xml.XmlReader CreateReader ();
member this.CreateReader : unit -> System.Xml.XmlReader
Public Function CreateReader () As XmlReader

반환

XmlReader

이 노드 및 하위 요소를 읽는 데 사용할 수 있는 XmlReader입니다.An XmlReader that can be used to read this node and its descendants.

예제

다음 예제에서는 XML 트리를 만들고 메서드를 사용 하 여을 만들며 XmlReader CreateReader 판독기를 사용 하 여를 만듭니다 XmlDocument .The following example creates an XML tree, creates an XmlReader by using the CreateReader method, and creates an XmlDocument by using the reader.

XDocument xmlTree = new XDocument(  
    new XElement("Root",  
        new XAttribute("Att1", "Attribute Content"),  
        new XElement("Child1", 1),  
        new XElement("Child2", 2)  
    )  
);  
XmlReader reader = xmlTree.CreateReader();  
reader.MoveToContent();  
XmlDocument doc = new XmlDocument();  
XmlNode cd = doc.ReadNode(reader);  
doc.AppendChild(cd);  
Console.WriteLine(doc.OuterXml);  
Dim xmlTree As XDocument =  _   
    <?xml version="1.0" encoding="utf-8" standalone="yes"?>  
        <Root Att1="Attribute Content">  
            <Child1>1</Child1>  
            <Child2>2</Child2>  
        </Root>  
Dim reader As XmlReader = xmlTree.CreateReader()  
reader.MoveToContent()  
Dim doc As XmlDocument = New XmlDocument()  
Dim cd As XmlNode = doc.ReadNode(reader)  
doc.AppendChild(cd)  
Console.WriteLine(doc.OuterXml)  

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

<Root Att1="Attribute Content"><Child1>1</Child1><Child2>2</Child2></Root>  

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

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.CreateReader(), 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 XElement = _   
        <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.CreateReader(), writer)  
End Using  

Console.WriteLine(newTree)  

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

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

설명

일반적으로를 사용 하 여 다른 구성 요소를 제공 해야 하는 경우이 메서드를 사용 XmlReader 합니다.You typically use this method when you have to supply another component with an XmlReader. 예를 들어 LINQ to XML 트리에서를 만든 XmlReader 다음 해당 판독기를에 전달할 수 있습니다 Load .For example, you can create an XmlReader from a LINQ to XML tree, and then pass that reader to Load.

에서 반환 하는 모든 판독기는 Create 정규화 판독기입니다.All of the readers returned by Create are normalizing readers. 항상 특성의 줄 바꿈 정규화 및 전체 정규화를 수행 합니다.They always perform line break normalization and full normalization of attributes. 반대로에서 반환 된는 XmlReader CreateReader 정규화 판독기가 아닙니다.In contrast, the XmlReader returned by CreateReader is not a normalizing reader. 공백을 변환 하지 않습니다.It does not transform any white space. 또한 특성 이름 순서가 아니라 추가 된 순서 대로 특성을 반환 합니다.It also returns attributes in the order that they were added, not in attribute name order.

LINQ to XML는 특성의 기본 특성에 대 한 정보를 유지 하지 않습니다.LINQ to XML does not keep information about whether attributes are default attributes. IsDefault 는 특성이 기본값에서 채워졌는지 여부와 관계 없이 항상 false를 반환 합니다.IsDefault will always return false regardless of whether the attribute was populated from a default value or not.

PUBLIC의 및 SYSTEM 의사 특성은 XDocumentType 메서드를 통해 사용할 수 없습니다 XmlReader.MoveToAttribute .The PUBLIC and SYSTEM pseudo attributes on XDocumentType are not available through the XmlReader.MoveToAttribute method. XmlReader.GetAttribute특성의 정규화 된 이름을 매개 변수로 사용 하는 메서드를 통해서만 사용할 수 있습니다.They are only available through the XmlReader.GetAttribute method that takes the qualified name of the attribute as a parameter. 또는 특성을 검색 해야 하는 경우 PUBLIC SYSTEM 메서드를 사용 해야 합니다 XmlReader.GetAttribute .If you have to retrieve the PUBLIC or SYSTEM attributes, you should use the XmlReader.GetAttribute method.

Base64 및 BinHex 데이터는 지원 되지 않습니다.Base64 and BinHex data are not supported. 이러한 형식의 데이터를 검색 하려고 하면 (예:를 호출 하 여 ReadElementContentAsBase64 ) 판독기가을 throw NotSupportedException 합니다.If you attempt to retrieve these types of data (for example, by calling ReadElementContentAsBase64), the reader will throw NotSupportedException.

xml선언은 판독기에서 표시 되지 않습니다.The xml declaration is not surfaced by the reader. 읽는 동안 형식의 노드는 발생 하지 않습니다 XmlDeclaration .While reading, you will not encounter a node of type XmlDeclaration.

적용 대상

CreateReader(ReaderOptions)

readerOptions 매개 변수에서 지정된 옵션을 사용하여 XmlReader를 만듭니다.Creates an XmlReader with the options specified by the readerOptions parameter.

public:
 System::Xml::XmlReader ^ CreateReader(System::Xml::Linq::ReaderOptions readerOptions);
public System.Xml.XmlReader CreateReader (System.Xml.Linq.ReaderOptions readerOptions);
member this.CreateReader : System.Xml.Linq.ReaderOptions -> System.Xml.XmlReader
Public Function CreateReader (readerOptions As ReaderOptions) As XmlReader

매개 변수

readerOptions
ReaderOptions

중복된 네임스페이스를 생략할지 여부를 지정하는 ReaderOptions 개체입니다.A ReaderOptions object that specifies whether to omit duplicate namespaces.

반환

XmlReader

XmlReader 개체입니다.An XmlReader object.

적용 대상