COMO: Executar consultas XPath usando as Classes System.Xml.XPath

Traduções deste artigo Traduções deste artigo
ID do artigo: 317069 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Este artigo passo a passo demonstra como usar as classes no namespace System.Xml.XPath para executar consultas XPath em aplicativos .NET.

Explorar o Namespace System.Xml.XPath

O namespace System.Xml.XPath contém o analisador de XPath e o mecanismo de avaliação do .NET Framework. O namespace System.Xml.XPath oferece suporte a recomendação do World Wide Web Consortium (W3C) XML Path Language (XPath) versão 1.0. Para obter mais informações sobre a recomendação XPath, visite o seguinte site da Web:
XML Path Language (XPath) Version 1.0
O namespace System.Xml.XPath também contém as seguintes classes que são otimizadas para executar consultas XPath e navegar conjuntos de resultados gerados por meio de programação:
  • XPathDocument : um alto desempenho, leia - cache somente para processar documentos XML e fluxos. XPathDocument é otimizado para processamento de XSLT (Extensible Stylesheet Language Transformation) e para o modelo de dados do XPath. XPathDocument usa o modelo de objeto documento (DOM) - com base em modelo de análise (carrega o XML de origem em uma estrutura de árvore na memória) mas não implementa as interfaces necessárias para inserir, modificar ou excluir nós em um documento XML (Extensible Markup Language) ou fluxo.
  • XPathNavigator : esta classe é baseado no modelo de dados do XPath. XPathNavigator fornece os métodos necessários para executar consultas XPath em dados XML que são carregados em um XPathDocument . XPathNavigator é instanciado, usando o método CreateNavigator de um objeto XPathDocument . Você também pode usar XPathNavigator para compilar expressões de consulta XPath executadas com freqüência e gerar um objeto System.Xml.XPath.XPathExpression que encapsula a consulta compilada.
  • XPathNodeIterator : fornece um iterador de somente - leitura, somente - direta. Quando você usar o método Select de um objeto XPathNavigator para executar uma consulta XPath, uma instância de XPathNodeIterator é criada. Você pode usar XPathNodeIterator para navegar no conjunto de resultados gerado pela consulta XPath.
  • XPathExpression : encapsula uma expressão de consulta XPath compilada. Você deve compilar uma expressão de consulta XPath antes de você pode executar a expressão de consulta. Uma expressão XPath compilada contém sintaxe é verificada de acordo com a especificação de linguagem de consulta do XPath do W3C. Uma chamada para o método de compilação de um objeto XPathNavigator retorna a classe XPathExpression . Normalmente, você use XPathExpression para fornecer uma expressão de consulta XPath pré-compilada em uma chamada para o método Select de um objeto XPathNavigator .
  • XPathException : exceção o .NET Framework que é gerada quando ocorre um erro ao processar uma expressão de consulta XPath. O método Select e o método Compile da classe XPathNavigator podem elevar XPathException .

Criar documentos XML de exemplo

Para criar dois documentos XML de exemplo para usar com o exemplo de código .NET subseqüente, execute essas etapas:
  1. Uso o bloco de notas ou um editor de texto semelhante para colar o código a seguir em um novo documento XML chamado Books.XML. Salve o documento na pasta raiz em seu disco rígido.
    <?xml version='1.0'?>
    <Books>
    <Book>
      <Title>Beginning XML</Title>
      <Publisher>Wrox</Publisher>
    </Book>
    <Book>
      <Title>XML Step by Step</Title>
      <Publisher>MSPress</Publisher>
    </Book>
    <Book>
      <Title>Professional XML</Title>
      <Publisher>Wrox</Publisher>
    </Book>
    <Book>
      <Title>Developing XML solutions</Title>
      <Publisher>MSPress</Publisher>
    </Book>
    </Books>
    					
  2. Uso o bloco de notas ou um editor de texto semelhante para colar o código a seguir em um novo documento XML chamado DotNetBooks.xml. Salve o documento na pasta raiz em seu disco rígido.
    <?xml version='1.0'?>
    <DotNetBooks>
    <DotNetBook>
      <Title>Professional C#</Title>
      <Publisher>Wrox</Publisher>
    </DotNetBook>
    <DotNetBook>
      <Title>ADO.Net Core Reference</Title>
      <Publisher>MSPress</Publisher>
    </DotNetBook>
    <DotNetBook>
      <Title>Professional VB.Net</Title>
      <Publisher>Wrox</Publisher>
    </DotNetBook>
    <DotNetBook>
      <Title>Inside C#</Title>
      <Publisher>MSPress</Publisher>
    </DotNetBook>
    </DotNetBooks>

Criar um projeto de .NET Visual Basic

  1. Inicie o Visual Studio.NET e crie um novo projeto Visual Basic.NET Windows Application.
  2. Arraste dois controles de botão da caixa de ferramentas para Form1.vb.
  3. Cole o seguinte código no procedimento de Click_Event do primeiro botão de comando:
    'Instantiate the XPathDocument class.
    Dim xmldoc As New System.Xml.XPath.XPathDocument("c:\books.xml")
    
    'Instantiate the XPathNavigator class.
    Dim nav As System.Xml.XPath.XPathNavigator = xmldoc.CreateNavigator()
    
    'Instantiate the XPathIterator class.
    Dim iterator As System.Xml.XPath.XPathNodeIterator = nav.Select("//Publisher[. = 'MSPress']/parent::node()/Title")
    
    'Use the XPathIterator class to navigate through the generated resultset
    'and then display the selected Titles.
    Do While iterator.MoveNext
        System.Diagnostics.Debug.WriteLine(iterator.Current.Value)
    Loop
    					
  4. Leia os comentários in-line para entender a funcionalidade do código. Preste atenção para como o código instancia e usa instâncias de objeto de cada uma das classes no namespace System.Xml.XPath . Observe que uma seqüência de caracteres Especifica o parâmetro de expressão de consulta XPath na chamada para o método Select do objeto XPathNavigator .
  5. Cole o seguinte código no procedimento de Click_Event do segundo botão de comando:
    'Construct the XPathDocument by specifying the path to Books.xml.
    Dim xmldoc As New System.Xml.XPath.XPathDocument("c:\books.xml")
    
    'Create the XPathNavigator.
    Dim nav As System.Xml.XPath.XPathNavigator = xmldoc.CreateNavigator()
    
    'Compile the XPath query expression to identify all MSPress Titles.
    'The Compile method of the XPathNavigator generates an XPathExpression object
    'that encapsulates the compiled query expression.
    
    Dim expr As System.Xml.XPath.XPathExpression = nav.Compile("//Publisher[. = 'MSPress']/parent::node()/Title")
    
    'Execute the Select method of the XPathNavigator to create the XPathNodeIterator.
    'Note that the sample code supplies the XPathExpression object as the query expression parameter.
    Dim iterator As System.Xml.XPath.XPathNodeIterator = nav.Select(expr)
    
    System.Diagnostics.Debug.WriteLine("MSPress titles in books.xml...")
    System.Diagnostics.Debug.WriteLine("******************************")
    
    'Use the iterator to navigate the generated resultset.
    Do While iterator.MoveNext
        System.Diagnostics.Debug.WriteLine(iterator.Current.Value)
    Loop
    
    
    'Release the XPathDocument and XPathNavigator.
    xmldoc = Nothing
    nav = Nothing
    
    System.Diagnostics.Debug.WriteLine(vbCrLf & "MSPress titles in DotNetBooks.xml...")
    System.Diagnostics.Debug.WriteLine("******************************")
    
    'Specify the path to DotNetBooks.xml to reconstruct the XPathDocument.
    xmldoc = New System.Xml.XPath.XPathDocument("c:\DotNetBooks.xml")
    
    'Create the XPathNavigator.
    nav = xmldoc.CreateNavigator()
    
    'Reuse the XPathExpression that you compiled previously to locate
    'all MSPress titles in DotNetBooks.xml.
    
    'You can reuse the XPathExpression because the hierarchy of elements that are referenced
    'in the XPath query is the same in Books.xml and DotNetBooks.xml. 
    'For example, the Publisher element is a child of the Title element in both XML documents.
    'The hierarchy must be identical for you to reuse the same XPathExpression object
    'across different XML documents/streams.
    
    'When you use an XPathExpression object, and the Select method executes,
    'the XPath query is not recompiled. 
    
    iterator = nav.Select(expr)
    
    'Use the iterator to navigate the generated resultset.
    Do While iterator.MoveNext
         System.Diagnostics.Debug.WriteLine(iterator.Current.Value)
    Loop
    					
  6. Leia os comentários in-line para entender a funcionalidade do código. Preste atenção para como o código de exemplo instancia o objeto XPathExpression na primeira vez (contra Books.XML) e, em seguida, reutiliza o objeto quando a consulta XPath é executado pela segunda vez (contra DotNetBooks.xml).

O projeto de teste

  1. Salvar as alterações para o projeto Visual Basic.NET e, em seguida, executar o projeto.
  2. Quando o formulário for exibido, clique o primeiro botão de comando para executar o código que usa uma seqüência de caracteres para especificar a expressão de consulta XPath. A saída da consulta XPath especificada contra Books.XML aparece da seguinte maneira:
    XML Step by Step
    Developing XML solutions
    					
  3. Clique no segundo botão de comando para executar o código que usa um objeto XPathExpression para especificar a expressão de consulta XPath. A saída da consulta XPath especificada contra Books.XML e DotNetBooks.xml aparece da seguinte maneira:
    MSPress titles in books.xml...
    ******************************
    XML Step by Step
    Developing XML solutions
    
    MSPress titles in DotNetBooks.xml...
    ******************************
    ADO.Net Core Reference
    Inside C#
    					

Propriedades

ID do artigo: 317069 - Última revisão: sexta-feira, 12 de agosto de 2005 - Revisão: 4.2
A informação contida neste artigo aplica-se a:
  • Microsoft .NET Framework 1.1
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft .NET Framework 1.0
Palavras-chave: 
kbmt kbhowtomaster KB317069 KbMtpt
Tradução automática
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: 317069

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com