XmlReader.ReadSubtree Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Egy új XmlReader példányt ad vissza, amely az aktuális csomópont és annak összes leszármazottja olvasására használható.
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
Válaszok
Egy új XML-olvasó példány, amely a következőre Initialvan állítva: . A metódus meghívása Read() az új olvasót a metódus hívása előtt aktuális csomópontra pozja ReadSubtree() .
Kivételek
A metódus meghívásakor az XML-olvasó nem található elemen.
-vagy-
Egy XmlReader metódust hívtak meg, mielőtt egy korábbi aszinkron művelet befejeződött. Ebben az esetben InvalidOperationException a "Aszinkron művelet már folyamatban van" üzenet jelenik meg.
Példák
Az alábbi példa a metódus használatát ReadSubtree mutatja be.
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
Az alábbi XML-adatokkal futtassa a jelen témakörben szereplő példákat:
<?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>
Megjegyzések
ReadSubtree csak elemcsomópontokon hívható meg. A teljes alfa beolvasása után a Read metódus hívásai visszatérnek false. Az új XML-olvasó bezárásakor az eredeti olvasó az EndElement alfa csomópontján lesz elhelyezve. Így ha a metódust a ReadSubtree könyvelem kezdőcímkéjén nevezte el, az alfa beolvasása és az új XML-olvasó bezárása után az eredeti XML-olvasó a könyvelem zárócímkéjén lesz elhelyezve.
Az új olvasó bezárásáig ne végezzen semmilyen műveletet az eredeti olvasón. Ez a művelet nem támogatott, és kiszámíthatatlan viselkedést eredményezhet.
Note
A ReadSubtree metódus nem az egymástól függetlenül használható XML-adatok másolatainak létrehozására szolgál. Úgy tervezték, hogy határt hozzon létre egy XML-elem körül. Ez akkor hasznos, ha adatokat szeretne átadni egy másik összetevőnek feldolgozás céljából, és korlátozni szeretné, hogy az összetevő mennyi adatot tud elérni. Ha a metódus által ReadSubtree visszaadott XML-olvasót egy másik alkalmazásnak adja át, az alkalmazás csak ezt az XML-elemet érheti el, a teljes XML-dokumentumot nem.