XPathNavigator.ReadSubtree Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает объект, содержащий текущий 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
Возвращаемое значение
Объект XmlReader , содержащий текущий узел и его дочерние узлы.
Исключения
Он XPathNavigator не расположен на узле элемента или корневом узле.
Примеры
В следующем примере показано использование ReadSubtree метода в первом book элементе contosoBooks.xml файла.
XPathDocument document = new XPathDocument("contosoBooks.xml");
XPathNavigator navigator = document.CreateNavigator();
navigator.MoveToChild("bookstore", "http://www.contoso.com/books");
navigator.MoveToChild("book", "http://www.contoso.com/books");
XmlReader reader = navigator.ReadSubtree();
while (reader.Read())
{
Console.WriteLine(reader.ReadInnerXml());
}
reader.Close();
Dim document As XPathDocument = New XPathDocument("contosoBooks.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()
navigator.MoveToChild("bookstore", "http://www.contoso.com/books")
navigator.MoveToChild("book", "http://www.contoso.com/books")
Dim reader As XmlReader = navigator.ReadSubtree()
While reader.Read()
Console.WriteLine(reader.ReadInnerXml())
End While
reader.Close()
Пример принимает contosoBooks.xml файл в качестве входных данных.
<?xml version="1.0" encoding="utf-8" ?>
<bookstore xmlns="http://www.contoso.com/books">
<book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">
<title>The Autobiography of Benjamin Franklin</title>
<author>
<first-name>Benjamin</first-name>
<last-name>Franklin</last-name>
</author>
<price>8.99</price>
</book>
<book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">
<title>The Confidence Man</title>
<author>
<first-name>Herman</first-name>
<last-name>Melville</last-name>
</author>
<price>11.99</price>
</book>
<book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">
<title>The Gorgias</title>
<author>
<name>Plato</name>
</author>
<price>9.99</price>
</book>
</bookstore>
Комментарии
XmlReader При создании объекта с текущим узлом и дочерними узлами XmlReader свойство объекта ReadState имеет значение Initial. Когда метод XmlReader объекта Read вызывается в первый раз, XmlReader перемещается на текущий узел XPathNavigator. Новый XmlReader объект продолжает читаться до конца XML-дерева. На этом этапе метод Read возвращает false, а свойству XmlReader объекта ReadState присваивается значение EndOfFile.
Замечание
Изменение положения объекта не влияет на положение XmlReaderXPathNavigatorобъекта.
Объявления пространства имен для пространств имен в области текущего узла не вставляются в XML-поток, предоставленный объекту XmlReader .
Замечание
Это поведение отличается от WriteSubtree метода.
Этот метод создает XmlReader объект с определенными параметрами чтения, и модуль, использующий этот метод, не имеет контроля над этими параметрами. Например, средство чтения, возвращаемое этим методом, запрещает обработку определений типов данных (DTD). Если средство чтения пытается прочитать файл, использующий DTD, он вызовет ошибку XmlException. Сообщение об исключении будет Unexpected DTD declaration.
Это поведение можно изменить, реализуя настраиваемый XmlResolver объект, возвращающий нужный XmlReaderXmlReaderSettingsобъект.