11 de jan. de 2017

Dicas para usar campos XML no campo banco de dados PostgreSQL

Primeiro vamos criar uma tabela de testes:
CREATE TEMP TABLE fragmentos (
 id integer PRIMARY KEY,
 html xml
);
 
Agora inserir alguns dados:
INSERT INTO fragmentos (1, 'Apenas uma parágrafo');
INSERT INTO fragmentos (2, 'Uma XML com links para: <ul>
<li><a href="http://www.google.com/">Google.com</a></li>
<li><a href="http://www.yahoo.com/">Yahoo.com</a></li>
<li><a href="">Link vazio</a></li>
<li><a href="#top">Link archor</a></li>
</ul>
');

Para obter todos atributos HREF de todas as tags A de todos os registros da tabela

SELECT
  id,
  unnest(array_remove(xpath('//a/@href', xmlelement(name banana, html))::text[],'')) AS href
FROM fragmentos
GROUP BY 1,2
ORDER BY 2

Nenhum comentário: