XPath sem Traumas

Por Fábio Vazquez

Este artigo discute Este artigo usa as seguintes tecnologias
  • O que é XPath e seus métodos
  • Como gerar e ler XML
  • Pesquisar dados com XPath
XML, C#
Download
xxx.zip (xxKB)
Chapéu
Xpath

Não é à toa que vemos poucos desenvolvedores usando os recursos maravilhosos disponibilizados por tecnologias como XPath (XML Path Language) e XSLT (Extensible Stylesheet Language Transformation): elas podem realmente parecer muito complexas. O objetivo deste artigo é dar uma visão de algumas utilizações práticas da linguagem de consulta XPath. Não detalharei questões intrincadas que envolvem a interpretação da sintaxe das expressões XPath, mas tentarei despertar a atenção do leitor para alguns usos interessantes proporcionados por esta tecnologia. Este artigo assume que o leitor já tenha familiaridade com os conceitos da tecnologia XML.

Faça o simples antes. Deixe o complicado para depois

Como qualquer consumidor convencional, nós, consumidores de tecnologia, precisamos ter a nossa atenção despertada para que criemos o interesse por algum produto tecnológico. Se algo parece muito complexo a primeira vista, pode até estimular o interesse de alguns, mas a maioria não chegará a ter desejo por usar a tecnologia, seja porque ela é demasiadamente complexa ou porque esta pessoa simplesmente não entende o que está a sua frente. XML em geral e as tecnologias acessórias como XPath, XSLT, XSD e outras, são baseadas em princípios altamente consolidados para desenvolvedores, como hierarquias, relacionamentos, caminhos, tipos de dados, gramáticas, entre outros. Por esta razão, não podemos deixar de usá-las porque as achamos complexas ou desnecessárias. Por serem baseados em texto, os documentos XML são facilmente lidos e interpretados, não somente por diferentes linguagens e plataformas operacionais, mas também pelo ser humano. Por exemplo, o documento mostrado na Listagem 1 é fácil verificar que se trata da representação de alguns pedidos e os seus respectivos itens. Mais precisamente, os pedidos do cliente “TRAIH” do database Northwind, que é distribuído com o Microsoft SQL Server 2000.

Listagem 1 - Documento XML hierárquico gerado a partir de um DataSet.

<xml version="1.0" standalone="yes" ?="">

    <pedidositens>
      <pedidos>
        <orderid>10574</orderid>

        <orderdate>1997-06-19T00:00:00.0000000-03:00</orderdate>

        <itens>
          <orderid>10574</orderid>

          <productid>33</productid>

          <unitprice>2.5000</unitprice>

          <quantity>14</quantity>

          <discount>0</discount>
        </itens>

        <itens>
          <orderid>10574</orderid>

          <productid>40</productid>

          <unitprice>18.4000</unitprice>

          <quantity>2</quantity>

          <discount>0</discount>
        </itens>

        <itens>
          <orderid>10574</orderid>

          <productid>62</productid>

          <unitprice>49.3000</unitprice>

          <quantity>10</quantity>

          <discount>0</discount>
        </itens>

        <itens>
          <orderid>10574</orderid>

          <productid>64</productid>

          <unitprice>33.2500</unitprice>

          <quantity>6</quantity>

          <discount>0</discount>
        </itens>
      </pedidos>

      <pedidos>
        <orderid>10577</orderid>

        <orderdate>1997-06-23T00:00:00.0000000-03:00</orderdate>

        <itens>
          <orderid>10577</orderid>

          <productid>39</productid>

          <unitprice>18.0000</unitprice>

          <quantity>10</quantity>

          <discount>0</discount>
        </itens>

        <itens>
          <orderid>10577</orderid>

          <productid>75</productid>

          <unitprice>7.7500</unitprice>

          <quantity>20</quantity>

          <discount>0</discount>
        </itens>

        <itens>
          <orderid>10577</orderid>

          <productid>77</productid>

          <unitprice>13.0000</unitprice>

          <quantity>18</quantity>

          <discount>0</discount>
        </itens>
      </pedidos>

      <pedidos>
        <orderid>10822</orderid>

        <orderdate>1998-01-08T00:00:00.0000000-03:00</orderdate>

        <itens>
          <orderid>10822</orderid>

          <productid>62</productid>

          <unitprice>49.3000</unitprice>

          <quantity>3</quantity>

          <discount>0</discount>
        </itens>

        <itens>
          <orderid>10822</orderid>

          <productid>70</productid>

          <unitprice>15.0000</unitprice>

          <quantity>6</quantity>

          <discount>0</discount>
        </itens>
      </pedidos>
    </pedidositens> ... 

Quer ler esse conteúdo completo? Tenha acesso completo