XmlReader.ReadSubtree 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
현재 노드와 해당 하위 노드 전체를 읽는 데 사용되는 새 XmlReader
인스턴스를 반환합니다.
public:
virtual System::Xml::XmlReader ^ ReadSubtree();
public virtual System.Xml.XmlReader ReadSubtree ();
abstract member ReadSubtree : unit -> System.Xml.XmlReader
override this.ReadSubtree : unit -> System.Xml.XmlReader
Public Overridable Function ReadSubtree () As XmlReader
반환
Initial로 설정된 새로운 XML 판독기 인스턴스입니다. Read() 메서드를 호출하면 ReadSubtree() 메서드를 호출하기 전에 현재 노드에 새 판독기가 배치됩니다.
예외
XML reader가 요소에 배치되지 않은 상태에서 이 메서드를 호출한 경우
또는
이전 비동기 작업이 완료되기 전에 XmlReader 메서드가 호출되었습니다. 이 경우 “비동기 작업이 이미 진행 중입니다.” 메시지를 나타내며 InvalidOperationException이 throw됩니다.
예제
다음 예제에서는 ReadSubtree 메서드를 사용하는 방법을 보여 줍니다.
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreWhitespace = true;
using (XmlReader reader = XmlReader.Create("books.xml", settings)) {
// Position the reader on the second book node
reader.ReadToFollowing("Book");
reader.Skip();
// Create another reader that contains just the second book node.
XmlReader inner = reader.ReadSubtree();
inner.ReadToDescendant("Title");
Console.WriteLine(inner.Name);
// Do additional processing on the inner reader. After you
// are done, call Close on the inner reader and
// continue processing using the original reader.
inner.Close();
}
Dim settings As New XmlReaderSettings()
settings.IgnoreWhitespace = True
Using reader As XmlReader = XmlReader.Create("books.xml", settings)
' Position the reader on the second book node.
reader.ReadToFollowing("Book")
reader.Skip()
' Create another reader that contains just the second book node.
Dim inner As XmlReader = reader.ReadSubtree()
inner.ReadToDescendant("Title")
Console.WriteLine(inner.Name)
' Do additional processing on the inner reader. After you
' are done, call Close on the inner reader and
' continue processing using the original reader.
inner.Close()
End Using
다음 XML 데이터를 사용하여 이 항목의 예제를 실행합니다.
<?xml version="1.0" encoding="utf-8" ?>
<Books>
<Book>
<Title>A Brief History of Time</Title>
</Book>
<Book>
<Title>Principle Of Relativity</Title>
</Book>
<Book>
<Title>Victory of Reason</Title>
</Book>
<Book>
<Title>The Unicorn that did not Fail</Title>
</Book>
<Book>
<Title>Rational Ontology</Title>
</Book>
<Book>
<Title>The Meaning of Pizza</Title>
</Book>
</Books>
설명
ReadSubtree 는 요소 노드에서만 호출할 수 있습니다. 전체 하위 트리를 읽으면 메서드에 대한 호출이 Read 반환됩니다 false
. 새 XML 판독기를 닫으면 원래 판독기는 하위 트리의 노드에 EndElement
배치됩니다. 따라서 책 요소의 시작 태그에서 메서드를 호출 ReadSubtree 한 경우 하위 트리를 읽고 새 XML 판독기를 닫은 후 원래 XML 판독기는 책 요소의 끝 태그에 배치됩니다.
새 판독기를 닫을 때까지 원래 판독기에서 작업을 수행하면 안 됩니다. 이 작업은 지원되지 않으며 예측할 수 없는 동작이 발생할 수 있습니다.
참고
이 메서드는 ReadSubtree 독립적으로 작업할 수 있는 XML 데이터의 복사본을 만들기 위한 것이 아닙니다. XML 요소 주위에 경계를 만들도록 설계되었습니다. 이 기능은 처리를 위해 다른 구성 요소에 데이터를 전달하려는 경우 구성 요소가 액세스할 수 있는 데이터의 양을 제한하려는 경우에 유용합니다. 반환 된 XML 판독기를 전달 하는 경우는 ReadSubtree 메서드를 다른 애플리케이션으로 해당 XML 요소만 전체 XML 문서에 액세스할 수 있습니다.