Como navegar XML com a classe XPathNavigator usando translation from VPE for Csharp Visual

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 308343
Para uma versão deste artigo do Microsoft Visual Basic. NET, consulte 301111.

Este artigo se refere aos seguintes namespaces Microsoft .NET Framework Class Library:
  • System.XML
  • System.Xml.XPath

NESTA TAREFA

Sumário
Este artigo passo a passo descreve como navegar por documentos XML (Extensible Markup Language) com um objeto XPathNavigator criado a partir de um objeto XPathDocument . Este exemplo carrega um objeto XPathDocument com dados XML, cria um objeto XPathNavigator como um modo de exibição para os dados e exibe o XML, acompanhando o documento.

back to the top

Requisitos

A lista a seguir descreve o hardware recomendado, software, infra-estrutura de rede e service packs que você precisa:
  • Microsoft Visual translation from VPE for Csharp
Este artigo pressupõe que você esteja familiarizado com os seguintes tópicos:
  • Terminologia XML
  • Criar e ler um arquivo XML
  • Sintaxe do XML Path Language (XPath)
back to the top

Como usar a classe XPathNavigator para navegar XML

  1. Crie um novo aplicativo de console translation from VPE for Csharp Visual no Visual Studio.

    Observação : Este exemplo usa um arquivo chamado Books.XML. Você pode criar seu próprio arquivo Books.XML ou você pode usar o exemplo que acompanha o QuickStarts .NET Software Development Kit (SDK). Se você não tem o QuickStarts instalado e não deseja instalá-las, consulte a seção "Referências" para o Books.XML local do download. Se você tiver o QuickStarts instalado, Books.XML está localizado na seguinte pasta:
    \Program Files\Microsoft.NET\FrameworkSDK\Samples\Quickstart\Howto\Samples\Xml\Transformxml\VB
    Você deve copiar Books.XML para a pasta \Bin\Debug que está localizada na pasta na qual você criou este projeto.
  2. Certifique-se que o projeto referências do namespace System.XML .
  3. Use a instrução usando em namespaces XML e o XPath para que não é necessário para qualificar declarações esses namespaces posteriormente no seu código. Você deve usar a instrução usando antes para qualquer outra declaração, da seguinte forma:
    using System.Xml;using System.Xml.XPath;					
  4. Declare as variáveis apropriadas. Declare um objeto XPathDocument para armazenar o documento XML e um objeto XPathNavigator para avaliar expressões XPath e percorrer o documento. Declare um objeto String para armazenar a expressão XPath. Adicione o código declaração no procedimento principal no Módulo1.
    XPathNavigator nav; XPathDocument docNav;					
  5. Carregar um objeto XPathDocument com o arquivo de exemplo Books.XML. A classe XPathDocument usa XSLT (Extensible Stylesheet Language Transformations) para fornecer um cache rápido e orientados a desempenho de processamento do documento XML. É semelhante para o objeto modelo DOM (Document), mas é altamente otimizada para processamento de XSLT e o modelo de dados do XPath.
    // Open the XML.docNav = new XPathDocument(@"c:\books.xml");					
  6. Crie um objeto XPathNavigator do documento. XPathNavigator permite mover através de nós de atributos e os nós de namespace em um documento XML.
    // Create a navigator to query with XPath.nav = docNav.CreateNavigator();					
  7. Mover para a raiz do documento com o método MoveToRoot . MoveToRoot define o navegador para o nó de documento que contém toda a árvore de nós.
    //Initial XPathNavigator to start at the root.nav.MoveToRoot();					
  8. Use o método MoveToFirstChild para mover para os filhos do documento XML. O método MoveToFirstChild move para o primeiro filho do nó atual. No caso da fonte do Books.XML, são movendo fora do documento raiz para os filhos, a seção de comentário e o nó Bookstore.
    //Move to the first child node (comment field).nav.MoveToFirstChild();					
  9. Use o método MoveToNext para iterar através de nós no nível do irmão. O método MoveToNext move para o próximo irmão do nó atual.
    //Loop through all of the root nodes.do {} while (nav.MoveToNext()); 					
  10. Use a propriedade NodeType para certificar-se que você está processando apenas nós elemento e use a propriedade Value para exibir a representação de texto do elemento.
    do {   //Find the first element.   if (nav.NodeType == XPathNodeType.Element) {     //Determine whether children exist.     if (nav.HasChildren == true) {         //Move to the first child.         nav.MoveToFirstChild();         //Loop through all the children.         do {            //Display the data.            Console.Write("The XML string for this child ");            Console.WriteLine("is '{0}'", nav.Value); 	   } while (nav.MoveToNext());        }     }} while (nav.MoveToNext());
  11. Use a propriedade HasAttributes para determinar se um nó possui os atributos. Você também pode usar outros métodos, como MoveToNextAttribute , para mover para um atributo e inspecionar o seu valor. Observe que este segmento de código percorre somente descendentes do nó raiz e não toda a árvore.
    do {   //Find the first element.   if (nav.NodeType == XPathNodeType.Element) {      //if children exist      if (nav.HasChildren == true) {         //Move to the first child.         nav.MoveToFirstChild();         //Loop through all the children.         do {            //Display the data.            Console.Write("The XML string for this child ");            Console.WriteLine("is '{0}'", nav.Value);            //Check for attributes.            if (nav.HasAttributes == true) {		Console.WriteLine("This node has attributes");  	    }	  } while (nav.MoveToNext());        }    }} while (nav.MoveToNext());
  12. Use o método ReadLine do objeto console para adicionar uma pausa no final da exibição do console para exibir os resultados acima mais prontamente.
    //Pause.Console.ReadLine();
  13. Criar e executar o projeto translation from VPE for Csharp Visual.
back to the top

Concluir a listagem de código

using System;using System.Xml;using System.Xml.XPath;namespace q308343 {	  class Class1 {    static void Main(string[] args)	{	XPathNavigator nav;         XPathDocument docNav; 	docNav = new XPathDocument(@"c:\books.xml");        nav = docNav.CreateNavigator();	nav.MoveToRoot();			        //Move to the first child node (comment field).        nav.MoveToFirstChild();        do {  	   //Find the first element.           if (nav.NodeType == XPathNodeType.Element) {               //Determine whether children exist.                if (nav.HasChildren == true) {                  //Move to the first child.                  nav.MoveToFirstChild();                  //Loop through all of the children.                  do {                     //Display the data.                     Console.Write("The XML string for this child ");                     Console.WriteLine("is '{0}'", nav.Value);                     //Check for attributes.                     if (nav.HasAttributes == true) {			Console.WriteLine("This node has attributes"); 		     }		   } while (nav.MoveToNext()); 		  }	       }	  } while (nav.MoveToNext());         //Pause.        Console.ReadLine();     }   }}
back to the top

Solução de problemas

Quando você testar o código, você receberá a seguinte mensagem de erro exceção:
Ocorreu uma exceção sem tratamento do tipo 'System.Xml.XmlException' na system.xml.dll

Obter informações adicionais: declaração XML inesperada. A declaração XML deve ser o primeiro nó no documento e nenhum caractere de espaço em branco podem ser exibidas antes dele. Linha 1, posição
O erro de exceção ocorre na linha de código a seguir:
docNav = new XPathDocument("c:\\books.xml");				
para resolver o erro, remova os caracteres de espaço em branco que precedem o primeiro nó no documento books.xml.back to the top
Referências
O seguinte arquivo está disponível para download no Centro de download da Microsoft:
Para obter mais informações, visite os seguintes sites:
XML no. NET: classes XML do .NET Framework e translation from VPE for Csharp oferecer manipulação de dados simples, escalonável
http://msdn.microsoft.com/msdnmag/issues/01/01/xml/default.aspx

Classe XPathNavigator
http://msdn.microsoft.com/en-us/library/system.xml.xpath.xpathnavigator.aspx

Classe XPathDocument
http://msdn.microsoft.com/en-us/library/system.xml.xpath.xpathdocument.aspx

Transformações em XSLT com a classe XslTransform
http://msdn.microsoft.com/en-us/library/47yh29a9(VS.80).aspx

Exemplos do XPath
http://msdn.microsoft.com/en-us/library/ms256086.aspx
Para obter mais informações sobre o XPath, visite o seguinte site da World Wide Web Consortium (W3C):
XML Path Language (XPath)
Versão 1.0: Recomendação do W3C 16 de novembro de 1999
http://www.w3.org/TR/1999/REC-xpath-19991116
back to the top

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 308343 - Última Revisão: 08/01/2008 22:53:26 - Revisão: 8.1

Bibliotecas de Classes do Microsoft .NET Framework 1.0, Microsoft Visual C# 2008 Express Edition, Microsoft Visual C# 2005

  • kbmt kbsweptvs2008 kbdownload kbhowtomaster KB308343 KbMtpt
Comentários