XNode.CreateReader 메서드

정의

이 노드에 대한 XmlReader를 만듭니다.

오버로드

CreateReader()

이 노드에 대한 XmlReader를 만듭니다.

CreateReader(ReaderOptions)

readerOptions 매개 변수에서 지정된 옵션을 사용하여 XmlReader를 만듭니다.

CreateReader()

이 노드에 대한 XmlReader를 만듭니다.

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

반환

XmlReader

이 노드 및 하위 요소를 읽는 데 사용할 수 있는 XmlReader입니다.

예제

다음 예제에서는 XML 트리를 만들고, 메서드를 XmlReader 사용하여 CreateReader 만들고, 판독기를 XmlDocument 사용하여 만듭니다.

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)  

이 예제는 다음과 같은 출력을 생성합니다.

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

이 메서드의 또 다른 용도는 XSLT 변환을 수행하는 것입니다. XML 트리를 만들고 XML 트리에서 XmlReader를 만든 다음 새 문서를 만들고 새 문서에 쓸 XmlWriter를 만들 수 있습니다. 그런 다음 XmlReaderXmlWriter를 변환에 전달하여 XSLT 변환을 호출할 수 있습니다. 변환이 성공적으로 완료된 후 새 XML 트리가 변환의 결과로 채워집니다.

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)  

이 예제는 다음과 같은 출력을 생성합니다.

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

설명

일반적으로 다른 구성 요소에 .를 제공해야 하는 경우 이 메서드를 XmlReader사용합니다. 예를 들어 LINQ to XML 트리에서 만든 XmlReader 다음 해당 판독기를 Load전달할 수 있습니다.

반환 Create 된 모든 판독기는 판독기를 정규화합니다. 항상 줄 바꿈 정규화 및 특성의 전체 정규화를 수행합니다. 반면에 반환 CreateReaderXmlReader 판독기는 정규화 판독기가 아닙니다. 공백을 변환하지 않습니다. 또한 특성 이름 순서가 아니라 추가된 순서대로 특성을 반환합니다.

LINQ to XML 특성이 기본 특성인지 여부에 대한 정보를 유지하지 않습니다. IsDefault 는 특성이 기본값에서 채워졌는지 여부에 관계없이 항상 false를 반환합니다.

메서드 PUBLIC 를 통해 XmlReader.MoveToAttribute 사용 가능한 의사 특성과 SYSTEM 의사 특성을 XDocumentType 사용할 수 없습니다. 특성의 XmlReader.GetAttribute 정규화된 이름을 매개 변수로 사용하는 메서드를 통해서만 사용할 수 있습니다. 또는 SYSTEM 특성을 검색 PUBLIC 해야 하는 경우 메서드를 XmlReader.GetAttribute 사용해야 합니다.

Base64 및 BinHex 데이터는 지원되지 않습니다. 이러한 유형의 데이터(예: 호출 ReadElementContentAsBase64)를 검색하려고 하면 판독기에서 throw NotSupportedException됩니다.

선언은 xml 판독기에서 표시되지 않습니다. 읽는 동안에는 형식 XmlDeclaration의 노드가 발생하지 않습니다.

추가 정보

적용 대상

CreateReader(ReaderOptions)

readerOptions 매개 변수에서 지정된 옵션을 사용하여 XmlReader를 만듭니다.

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 개체입니다.

반환

XmlReader

XmlReader 개체입니다.

적용 대상