XmlReader.ReadSubtree Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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.