Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Há várias maneiras diferentes de representar um documento XML no Microsoft .NET Framework. Isso inclui o uso de um String, ou usando as classes XmlReader, XmlWriter, XmlDocument, ou XPathDocument. Para facilitar a movimentação entre essas diferentes representações de um documento XML, a XPathNavigator classe fornece uma série de métodos e propriedades para extrair o XML como um Stringobjeto XmlReader ou XmlWriter objeto.
Converter um XPathNavigator em uma cadeia de caracteres
A propriedade OuterXml da classe XPathNavigator é usada para obter a marcação do documento XML inteiro ou apenas a marcação de um único nó e seus nós filho.
Observação
A propriedade InnerXml obtém a marcação de apenas os nós filho de um nó.
O exemplo de código a seguir mostra como salvar um documento XML inteiro contido em um objeto XPathNavigator como um String, bem como um único nó e seus nós filho.
Dim document As XPathDocument = New XPathDocument("input.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()
' Save the entire input.xml document to a string.
Dim xml As String = navigator.OuterXml
' Now save the Root element and its child nodes to a string.
navigator.MoveToChild(XPathNodeType.Element)
Dim root As String = navigator.OuterXml
XPathDocument document = new XPathDocument("input.xml");
XPathNavigator navigator = document.CreateNavigator();
// Save the entire input.xml document to a string.
string xml = navigator.OuterXml;
// Now save the Root element and its child nodes to a string.
navigator.MoveToChild(XPathNodeType.Element);
string root = navigator.OuterXml;
Converter um XPathNavigator em um XmlReader
O método ReadSubtree é usado para transmitir o conteúdo inteiro de um documento XML ou apenas um único nó e seus nós filho para um objeto XmlReader.
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 XPathNavigator. O novo XmlReader objeto continua a ser lido até que o final da árvore XML seja atingido. Neste ponto, o Read método retorna false e a XmlReader propriedade do ReadState objeto é definida como EndOfFile.
A XPathNavigator posição do objeto é inalterada pela criação ou movimentação do XmlReader objeto. O método ReadSubtree é válido somente quando posicionado em um elemento ou um nó raiz.
O exemplo a seguir mostra como obter um objeto XmlReader que contém o documento XML inteiro em um objeto XPathDocument assim como um único nó e seus nós filho.
Dim document As XPathDocument = New XPathDocument("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()
' Stream the entire XML document to the XmlReader.
Dim xml As XmlReader = navigator.ReadSubtree()
While xml.Read()
Console.WriteLine(xml.ReadInnerXml())
End While
xml.Close()
' Stream the book element and its child nodes to the XmlReader.
navigator.MoveToChild("bookstore", "")
navigator.MoveToChild("book", "")
Dim book As XmlReader = navigator.ReadSubtree()
While book.Read()
Console.WriteLine(book.ReadInnerXml())
End While
book.Close()
XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();
// Stream the entire XML document to the XmlReader.
XmlReader xml = navigator.ReadSubtree();
while (xml.Read())
{
Console.WriteLine(xml.ReadInnerXml());
}
xml.Close();
// Stream the book element and its child nodes to the XmlReader.
navigator.MoveToChild("bookstore", "");
navigator.MoveToChild("book", "");
XmlReader book = navigator.ReadSubtree();
while (book.Read())
{
Console.WriteLine(book.ReadInnerXml());
}
book.Close();
O exemplo usa o books.xml arquivo como entrada.
<?xml version="1.0" encoding="utf-8" ?>
<bookstore>
<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>
Convertendo um XPathNavigator em um XmlWriter
O método WriteSubtree é usado para transmitir o conteúdo inteiro de um documento XML ou apenas um único nó e seus nós filho para um objeto XmlWriter.
A XPathNavigator posição do objeto é inalterada pela criação do XmlWriter objeto.
O exemplo a seguir mostra como obter um objeto XmlWriter que contém o documento XML inteiro em um objeto XPathDocument assim como um único nó e seus nós filho.
Dim document As XPathDocument = New XPathDocument("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()
' Stream the entire XML document to the XmlWriter.
Dim xml As XmlWriter = XmlWriter.Create("newbooks.xml")
navigator.WriteSubtree(xml)
xml.Close()
' Stream the book element and its child nodes to the XmlWriter.
navigator.MoveToChild("bookstore", "")
navigator.MoveToChild("book", "")
Dim book As XmlWriter = XmlWriter.Create("book.xml")
navigator.WriteSubtree(book)
book.Close()
XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();
// Stream the entire XML document to the XmlWriter.
XmlWriter xml = XmlWriter.Create("newbooks.xml");
navigator.WriteSubtree(xml);
xml.Close();
// Stream the book element and its child nodes to the XmlWriter.
navigator.MoveToChild("bookstore", "");
navigator.MoveToChild("book", "");
XmlWriter book = XmlWriter.Create("book.xml");
navigator.WriteSubtree(book);
book.Close();
O exemplo usa o books.xml arquivo encontrado anteriormente neste tópico como entrada.