XmlReader.ReadSubtree Yöntem

Tanım

Geçerli düğümü ve tüm alt öğeleri okumak için kullanılabilecek yeni XmlReader bir örnek döndürür.

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

Döndürülenler

olarak ayarlanmış Initialyeni bir XML okuyucu örneği. yöntemini çağırmak Read() , yeni okuyucuyu yöntem çağrısından önce geçerli olan düğüme konumlandırir ReadSubtree() .

Özel durumlar

Bu yöntem çağrıldığında XML okuyucusu bir öğeye konumlandırılmıyor.

-veya-

Önceki XmlReader bir zaman uyumsuz işlem tamamlanmadan önce bir yöntem çağrıldı. Bu durumda, InvalidOperationException "Zaman uyumsuz bir işlem zaten devam ediyor" iletisiyle oluşturulur.

Örnekler

Aşağıdaki örnekte yönteminin nasıl kullanılacağı gösterilmektedir 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

Bu konudaki örnekleri çalıştırmak için aşağıdaki XML verilerini kullanın:

<?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>

Açıklamalar

ReadSubtree yalnızca öğe düğümlerinde çağrılabilir. Alt ağacın tamamı okunduğunda yöntemine Read yapılan çağrılar döndürür false. Yeni XML okuyucu kapatıldığında, özgün okuyucu alt ağacın düğümüne EndElement konumlandırılır. Bu nedenle, alt ağaç okunduktan ve yeni XML okuyucu kapatıldıktan sonra, kitap öğesinin başlangıç etiketinde yöntemini çağırdıysanız ReadSubtree , özgün XML okuyucu kitap öğesinin bitiş etiketine konumlandırılır.

Yeni okuyucu kapatılana kadar özgün okuyucu üzerinde herhangi bir işlem gerçekleştirmemelisiniz. Bu eylem desteklenmez ve öngörülemeyen davranışlara neden olabilir.

Not

yöntemi, ReadSubtree XML verilerinin bağımsız olarak çalışabileceğiniz kopyalarını oluşturmak için tasarlanmamıştır. Xml öğesinin çevresinde bir sınır oluşturmak için tasarlanmıştır. Bu, verileri işlenmek üzere başka bir bileşene geçirmek ve bileşenin erişebileceği veri miktarını sınırlamak istiyorsanız kullanışlıdır. yöntemi tarafından döndürülen bir XML okuyucuyu ReadSubtree başka bir uygulamaya geçirdiğinizde, uygulama xml belgesinin tamamına değil, yalnızca bu XML öğesine erişebilir.

Şunlara uygulanır