Atributo nó Raiz For Xml
11/01/2016
0
Boa Tarde
Estou querendo colocar um atributo no nó raiz do xml, usando o for xml, sei como faz em uma tag simples como segue no exemplo, porém não estou conseguindo no nó raiz.
Estou tentando evitar usar um replace no nó Raiz para colocar manualmente o atributo.
Query que monta o Xml
Xml de Resultado
Estou querendo colocar um atributo no nó raiz do xml, usando o for xml, sei como faz em uma tag simples como segue no exemplo, porém não estou conseguindo no nó raiz.
Estou tentando evitar usar um replace no nó Raiz para colocar manualmente o atributo.
Query que monta o Xml
select top 5 'atrVenda' as [venda/@Atributo], a.venda as 'venda', a.loja as 'loja', a.caixa as 'caixa' from vendas a with(nolock) for xml path('Venda'),root('Vendas')
Xml de Resultado
<Vendas> <Venda> <venda Atributo="atrVenda">1</venda> <loja>1</loja> <caixa>1</caixa> </Venda> <Venda> <venda Atributo="atrVenda">2</venda> <loja>1</loja> <caixa>1</caixa> </Venda> <Venda> <venda Atributo="atrVenda">3</venda> <loja>1</loja> <caixa>1</caixa> </Venda> <Venda> <venda Atributo="atrVenda">4</venda> <loja>1</loja> <caixa>1</caixa> </Venda> <Venda> <venda Atributo="atrVenda">5</venda> <loja>1</loja> <caixa>1</caixa> </Venda> </Vendas>
Lucas Ramos
Curtir tópico
+ 0
Responder
Posts
11/01/2016
Lucas Ramos
Consegui fazer mas não na query acima, mas na implementação que eu precisava.
Vou deixar a implementação para quem tiver dúvidas com o For XML um bom exemplo.
Implementaçaõ para o PAF ECF para Envio dos Dados Redução Z
Resultado Xml quase completo o arquivo
Vou deixar a implementação para quem tiver dúvidas com o For XML um bom exemplo.
select top 5 '1.0' as [@Versao], 'atrVenda' as [venda/@Atributo], a.venda as 'venda', a.loja as 'loja', a.caixa as 'caixa' from vendas a with(nolock) for xml path('venda'), root('Vendas'), elements
Implementaçaõ para o PAF ECF para Envio dos Dados Redução Z
select '1.0' as '@Versao', (select dbo.SO_NUMERO(x.INSCRICAO_ESTADUAL) as 'Ie', dbo.SO_NUMERO(x.INSCRICAO_FEDERAL) as 'Cnpj', x.RAZAO_SOCIAL as 'NomeEmpresarial' from parametros x for xml path(''), TYPE) as 'Estabelecimento', (SELECT dbo.SO_NUMERO(y.PAFECF_NUMERO_CREDENCIAMENTO_UF) as 'NumeroCredenciamento', y.PAFECF_NOME_COMERCIAL as 'NomeComercial', y.VERSAO as 'Versao', dbo.SO_NUMERO(y.PAFECF_CNPJ_DESENVOLVEDOR) as 'CnpjDesenvolvedor', y.PAFECF_NOME_EMPRESARIAL as 'NomeEmpresarialDesenvolvedor' FROM PARAMETROS y for xml path(''), TYPE) as 'PafEcf', (select a.ECF_FABRICACAO as 'NumeroFabricacao', a.ECf_tipo as 'Tipo', a.ecf_marca as 'Marca', a.ecf_modelo as 'Modelo', a.ECF_VERSAOSB as 'Versao', (select convert(varchar(10),a.movimento,103) as 'DataReferencia', a.ECF_CRZ as 'CRZ', a.ecf_coo as 'COO', a.ecf_Cro as 'CRO', convert(numeric(15,0),a.VENDA_BRUTA * 100) as 'VendaBrutaDiaria', convert(numeric(15,0),a.GT_FINAL * 100) as 'GT', (select x.TOTALIZADOR_PARCIAL as 'Nome', convert(numeric(15,0),x.VALOR_ACUMULADO * 100)as 'Valor' from REDUCOES_DETALHES x with(nolock) where x.REDUCAO = a.REDUCAO and x.VALOR_ACUMULADO > 0 for xml path('TotalizadorParcial'), TYPE) as 'TotalizadoresParciais' for xml path(''), TYPE) as 'DadosReducaoZ' for xml path(''), TYPE) as 'Ecf' from reducoes a with(nolock) where a.reducao = 46 for xml path('ReducaoZ')
Resultado Xml quase completo o arquivo
<ReducaoZ Versao="1.0"> <Estabelecimento> <Ie>123456789</Ie> <Cnpj>123456789</Cnpj> <NomeEmpresarial>Empresa Teste</NomeEmpresarial> </Estabelecimento> <PafEcf> <NumeroCredenciamento>123456</NumeroCredenciamento> <NomeComercial>AppTEste</NomeComercial> <Versao>1.0.0.0</Versao> <CnpjDesenvolvedor>123456789</CnpjDesenvolvedor> <NomeEmpresarialDesenvolvedor>Empresa Teste</NomeEmpresarialDesenvolvedor> </PafEcf> <Ecf> <NumeroFabricacao>BM123132132132131</NumeroFabricacao> <Tipo>ECF-IF </Tipo> <Marca>BEMATECH</Marca> <Modelo>MP-2100 TH FI</Modelo> <Versao>010101</Versao> <DadosReducaoZ> <DataReferencia>28/12/2015</DataReferencia> <CRZ>0289</CRZ> <COO>008078</COO> <CRO>0041</CRO> <VendaBrutaDiaria>40710</VendaBrutaDiaria> <GT>75351864</GT> <TotalizadoresParciais> <TotalizadorParcial> <Nome>Can-T</Nome> <Valor>3000</Valor> </TotalizadorParcial> <TotalizadorParcial> <Nome>DT</Nome> <Valor>1927</Valor> </TotalizadorParcial> <TotalizadorParcial> <Nome>F1</Nome> <Valor>35783</Valor> </TotalizadorParcial> <TotalizadorParcial> <Nome>OPNF</Nome> <Valor>11000</Valor> </TotalizadorParcial> </TotalizadoresParciais> </DadosReducaoZ> </Ecf> </ReducaoZ>
Responder
Clique aqui para fazer login e interagir na Comunidade :)