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

Traduções de Artigos Traduções de Artigos
Artigo: 317069 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Este artigo passo a passo demonstra como utilizar as classes no espaço de nomes System.Xml.XPath para executar consultas XPath no aplicações .NET.

Explore o espaço de nomes System.Xml.XPath

O espaço de nomes System.Xml.XPath contém o analisador de XPath e o motor de avaliação do .NET Framework. O espaço de nomes System.Xml.XPath suporta a recomendação de versão 1.0 de XML Path Language (XPath) de World Wide Web Consortium (W3C). Para obter mais informações sobre a recomendação XPath, visite o seguinte site de W3C Web:
XML Path Language (XPath) Version 1.0
O espaço de nomes System.Xml.XPath também contém as seguintes classes que são optimizadas para executar consultas XPath e navegar através de programação de conjuntos de resultados gerados:
  • XPathDocument : de alto desempenho, leia - cache apenas para processar documentos XML e sequências. XPathDocument está optimizado para processamento de Extensible Stylesheet Language Transformation (XSLT) e para o modelo de dados de XPath. XPathDocument utiliza document objecto model (DOM) - baseado análise modelo (carrega o XML de origem para uma estrutura de árvore na memória) mas não implementa as interfaces necessárias inserir, modificar ou eliminar nós de um documento de XML (Extensible Markup Language) ou a transmissão em sequência.
  • XPathNavigator : Esta classe é baseado no modelo de dados XPath. XPathNavigator fornece os métodos necessários para executar consultas XPath a dados XML que são carregados para um XPathDocument . XPathNavigator é instanciado utilizando o método CreateNavigator de um objecto XPathDocument . Pode também utilizar o XPathNavigator a compilação expressões de consulta XPath frequentemente executadas e gerar um objecto System.Xml.XPath.XPathExpression que encapsula a consulta compilada.
  • XPathNodeIterator : fornece uma forward - apenas, leitura - apenas iterador. Quando utilizar o método Select de um objecto XPathNavigator para executar uma consulta XPath, é criada uma instância de XPathNodeIterator . Pode utilizar o XPathNodeIterator para navegar no conjunto de resultados gerado pela consulta XPath.
  • XPathExpression : encapsula uma expressão de consulta XPath compilada. Tem compilar uma expressão de consulta XPath antes pode executar a expressão da consulta. Uma expressão XPath compilada contém sintaxe é verificado para que satisfaçam a especificação de linguagem de consulta XPath W3C. Uma chamada ao método de compilação de um objecto XPathNavigator devolve a classe XPathExpression . Normalmente, utilize XPathExpression para fornecer uma pré-compilada XPath expressão da consulta numa chamada ao método Select de um objecto XPathNavigator .
  • XPathException : excepçã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 de compilação da classe XPathNavigator podem aumentar XPathException .

Criar documentos XML de exemplo

Para criar dois documentos XML de exemplo para utilizar com o exemplo de código .NET subsequente, siga estes passos:
  1. O bloco de notas utilização ou um editor de texto semelhante para colar o seguinte código num novo documento XML denominado Books.XML. Guarde o documento na pasta raiz do 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. O bloco de notas utilização ou um editor de texto semelhante para colar o seguinte código num novo documento XML denominado DotNetBooks.xml. Guarde o documento na pasta raiz do 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 projecto .NET de Visual Basic

  1. Inicie o Visual Studio .NET e, em seguida, crie um novo projecto do Visual Basic .NET Windows Application.
  2. Arraste o botão dois controlos da caixa de ferramentas para Form1.VB.
  3. Cole o seguinte código no procedimento 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 incluídos para compreender a funcionalidade do código. Preste especial atenção para como o código instancia e utiliza instâncias do objecto de cada uma das classes no espaço de nomes System.Xml.XPath . Tenha em atenção que uma cadeia Especifica o parâmetro de expressão de consulta XPath na chamada ao método Select do objecto XPathNavigator .
  5. Cole o seguinte código no procedimento 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 incluídos para compreender a funcionalidade do código. Preste especial atenção para como o código de exemplo instancia objecto XPathExpression pela primeira vez (contra Books.XML) e, em seguida, reutiliza o objecto quando a consulta XPath é executado pela segunda vez (contra DotNetBooks.xml).

Testar o projecto

  1. Guardar as alterações ao projecto do Visual Basic .NET e, em seguida, execute o projecto.
  2. Quando o formulário for apresentado, clique no primeiro botão de comando para executar o código que utiliza uma cadeia para especificar a expressão de consulta XPath a. A saída da consulta XPath especificada Books.XML aparece da seguinte forma:
    XML Step by Step
    Developing XML solutions
    					
  3. Clique no segundo botão de comando para executar o código que utiliza um objecto XPathExpression para especificar a expressão de consulta XPath. A saída da consulta XPath especificada Books.XML e DotNetBooks.xml aparece da seguinte forma:
    MSPress titles in books.xml...
    ******************************
    XML Step by Step
    Developing XML solutions
    
    MSPress titles in DotNetBooks.xml...
    ******************************
    ADO.Net Core Reference
    Inside C#
    					

Propriedades

Artigo: 317069 - Última revisão: 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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