XPathNavigator.ReadSubtree Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Devolve um XmlReader objeto que contém o nó atual e os seus nós filhos.
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
Devoluções
Um XmlReader objeto que contém o nó atual e os seus nós filhos.
Exceções
O XPathNavigator não está posicionado num nó elemento nem no nó raiz.
Exemplos
O exemplo seguinte ilustra o uso do ReadSubtree método no primeiro book elemento do contosoBooks.xml ficheiro.
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()
O exemplo usa o contosoBooks.xml arquivo como uma entrada.
<?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>
Observações
Quando o objeto XmlReader é criado com o nó atual e seus nós filho, a propriedade XmlReader do objeto ReadState é definida como Initial. Quando o método XmlReader do objeto Read é chamado pela primeira vez, o XmlReader é movido para o nó atual do XPathNavigator. O novo XmlReader objeto continua a ser lido até que o final da árvore XML seja alcançado. Neste ponto, o Read método retorna false e a XmlReader propriedade do ReadState objeto é definida como EndOfFile.
Note
Alterar a posição do XmlReader objeto não afeta a posição do XPathNavigator.
As declarações de namespace para os namespaces dentro do âmbito do nó atual não são inseridas no fluxo XML fornecido ao XmlReader objeto.
Note
Este comportamento difere do WriteSubtree método.
Este método cria o XmlReader objeto com definições específicas do leitor, e o módulo que utiliza este método não tem controlo sobre essas definições. Por exemplo, o leitor devolvido por este método proíbe o processamento de Definições de Tipos de Dados (DTDs). Se o leitor tentar ler um ficheiro que utiliza um DTD, irá apresentar um erro, XmlException. A mensagem para a exceção será Unexpected DTD declaration.
Pode alterar este comportamento implementando um costume XmlResolver que devolve um XmlReader com o desejado XmlReaderSettings.