none
XML Nodes RRS feed

  • Pergunta

  • Olá.

    Estou com uma dúvida que não encontrei uma documentação adequada.

    Eu tenho um sistema que reconhece arquivos XMLs e realiza o processamento, sem problemas, quando o XML se encontra na máquina como um arquivo.

    Até aí tudo bem, mas eu gostaria de realizar o retorno das informações via banco de dados, com a informação do XML em uma tabela.

    A minha dúvida é se é possível IDENTIFICAR os níveis do XML via banco de dados? E se também eu consigo fazer um select dessas informações especificamente? Exemplo, tenho um seguinte XML inserido em uma tabela do banco: 

    <Pessoas>
    <Pessoa>
    <Nome>Thales</Nome>
    </Pessoa>
    <Pessoa>
    <Nome>Ana</Nome>
    </Pessoa>
    </Pessoas>



    Gostaria de uma forma de identificar todos os níveis (Pessoas/Pessoa/Nome) e então selecionar apenas os nomes.
    Seria possível essa operação?


    Agradeço desde então,
    sexta-feira, 16 de outubro de 2015 12:01

Respostas

  • Existe um post do Gustavo Maia muito bom sobre esse tema !!

    Como importar arquivos XML para o SQL Server

    Lá está bem explicado como fazer a importação do XML para o Banco, lembrando que vc não vai conseguir dar um select direto no XML, vc precisa importar de toda forma para poder manipular !!!!

    — Importa o XSD para uma variável fazendo validação
    DECLARE @XML XML (xsdProdutos)
    SET @XML = (
        SELECT CAST(BulkColumn AS XML)
        FROM OPENROWSET(BULK N‘C:\CategoriasDados.xml’, SINGLE_BLOB)
        AS Arquivo)
    
    — Mostrar as categorias
    SELECT Cats.Cat.value(‘@Nome’,‘nvarchar(80)’) AS Categorias
    FROM @XML.nodes(‘/Categorias/Categoria’) AS Cats(Cat)
    
    — Mostrar os produtos e as categorias
    SELECT 
        Cats.Cat.value(‘string(../@Nome)’,‘nvarchar(80)’) AS Categoria,
        Cats.Cat.value(‘@Nome’,‘nvarchar(80)’) AS Nome,
        Cats.Cat.value(‘@Marca’,‘nvarchar(30)’) AS Marca,
        Cats.Cat.value(‘@Valor’,‘smallmoney’) AS Valor
    FROM @XML.nodes(‘/Categorias/Categoria/Produto’) AS Cats(Cat)


    Flávio Farias
    "May the Force be with you"
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    • Marcado como Resposta Marcos SJ sexta-feira, 16 de outubro de 2015 13:26
    sexta-feira, 16 de outubro de 2015 12:13