Jump to content
DANIEL ALVES BARBOSA

Lendo Atributos XML com php

Recommended Posts

Na verdade não é uma dúvida e sim um exemplo de código que fiz para capturar os atributos do XML e ler com php.

 

<?xml version="1.0" encoding="utf-8"?>
<FDBS Version="15">
<Manager UpdatesRegistry="True">
<TableList>
<Table Name="FDQuery2" SourceName="ORCAMENTO_ITENS" SourceID="1" TabID="0" EnforceConstraints="False" MinimumCapacity="50">
<ColumnList>
<Column Name="ID" SourceName="ID" SourceID="1" DataType="Int32" Searchable="True" Base="True" OInUpdate="True" OInWhere="True" OInKey="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="ID"/>
<Column Name="ITEM" SourceName="ITEM" SourceID="2" DataType="Int32" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="ITEM"/>
<Column Name="ID_PRODUTO" SourceName="ID_PRODUTO" SourceID="3" DataType="Int32" Searchable="True" Base="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="ID_PRODUTO"/>
<Column Name="ID_ORCAMENTO" SourceName="ID_ORCAMENTO" SourceID="4" DataType="Int32" Searchable="True" Base="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="ID_ORCAMENTO"/>
<Column Name="QUANTIDADE" SourceName="QUANTIDADE" SourceID="5" DataType="FmtBCD" Precision="18" Scale="6" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="QUANTIDADE" SourcePrecision="18" SourceScale="6"/>
<Column Name="VALOR_UNITARIO" SourceName="VALOR_UNITARIO" SourceID="6" DataType="FmtBCD" Precision="18" Scale="6" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="VALOR_UNITARIO" SourcePrecision="18" SourceScale="6"/>
<Column Name="VALOR_CUSTO" SourceName="VALOR_CUSTO" SourceID="7" DataType="FmtBCD" Precision="18" Scale="6" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="VALOR_CUSTO" SourcePrecision="18" SourceScale="6"/>
<Column Name="VALOR_PRODUTOS" SourceName="VALOR_PRODUTOS" SourceID="8" DataType="FmtBCD" Precision="18" Scale="6" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="VALOR_PRODUTOS" SourcePrecision="18" SourceScale="6"/>
<Column Name="TOTAL_ITEM" SourceName="TOTAL_ITEM" SourceID="9" DataType="FmtBCD" Precision="18" Scale="6" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="TOTAL_ITEM" SourcePrecision="18" SourceScale="6"/>
<Column Name="DESCONTO" SourceName="DESCONTO" SourceID="10" DataType="FmtBCD" Precision="18" Scale="6" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="DESCONTO" SourcePrecision="18" SourceScale="6"/>
<Column Name="ACRESCIMO" SourceName="ACRESCIMO" SourceID="11" DataType="FmtBCD" Precision="18" Scale="6" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="ACRESCIMO" SourcePrecision="18" SourceScale="6"/>
<Column Name="ACRESCIMO_RATEIO" SourceName="ACRESCIMO_RATEIO" SourceID="12" DataType="FmtBCD" Precision="18" Scale="6" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="ACRESCIMO_RATEIO" SourcePrecision="18" SourceScale="6"/>
<Column Name="DESCONTO_RATEIO" SourceName="DESCONTO_RATEIO" SourceID="13" DataType="FmtBCD" Precision="18" Scale="6" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="DESCONTO_RATEIO" SourcePrecision="18" SourceScale="6"/>
<Column Name="CANCELADO" SourceName="CANCELADO" SourceID="14" DataType="AnsiString" Size="1" Searchable="True" AllowNull="True" FixedLen="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="CANCELADO" SourceSize="1"/>
<Column Name="MOVIMENTA_ESTOQUE" SourceName="MOVIMENTA_ESTOQUE" SourceID="15" DataType="AnsiString" Size="1" Searchable="True" AllowNull="True" FixedLen="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="MOVIMENTA_ESTOQUE" SourceSize="1"/>
<Column Name="DESC_ACRES" SourceName="DESC_ACRES" SourceID="16" DataType="AnsiString" Size="15" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="DESC_ACRES" SourceSize="15"/>
<Column Name="ID_GRADE_ITENS" SourceName="ID_GRADE_ITENS" SourceID="17" DataType="Int32" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="ID_GRADE_ITENS"/>
</ColumnList>
<ConstraintList/>
<ViewList/>
<RowList>
<Row RowID="0">
<Original ID="1" ITEM="1" ID_PRODUTO="1" ID_ORCAMENTO="1" QUANTIDADE="1" VALOR_UNITARIO="2.5" VALOR_CUSTO="0" VALOR_PRODUTOS="2.5" TOTAL_ITEM="2.5" DESCONTO="0" ACRESCIMO="0" ACRESCIMO_RATEIO="0" DESCONTO_RATEIO="0" CANCELADO="N" MOVIMENTA_ESTOQUE="N" DESC_ACRES=""/>
</Row>
<Row RowID="1">
<Original ID="2" ITEM="1" ID_PRODUTO="1" ID_ORCAMENTO="2" QUANTIDADE="1" VALOR_UNITARIO="2.5" VALOR_CUSTO="0" VALOR_PRODUTOS="2.5" TOTAL_ITEM="2.5" DESCONTO="0" ACRESCIMO="0" ACRESCIMO_RATEIO="0" DESCONTO_RATEIO="0" CANCELADO="N" MOVIMENTA_ESTOQUE="N" DESC_ACRES=""/>
</Row>
</RowList>
</Table>
</TableList>
<RelationList/>
<UpdatesJournal>
<Changes/>
</UpdatesJournal>
</Manager>
</FDBS>

 

Arquivo php

 

<?php



$xml = simplexml_load_file('uploads/teste3.xml');


foreach ($xml->children()->children()->children()->children() as $node) {

    foreach ($node as $value) {

        foreach ($value as $value2) {

            $id2 =  "NULL";
            $item2= $value2['ITEM'];

            $id_produto2 = $value2['ID_PRODUTO'];
            
            $id_orcamento2 = $value2['ID_ORCAMENTO'];
            $id_quantidade2 = $value2['QUANTIDADE'];
            $valor_unitario2 =  $value2['VALOR_UNITARIO'];
            $valor_custo2 =  $value2['VALOR_CUSTO'];
            $valor_produtos2 =  $value2['VALOR_PRODUTOS'];
            $total_item2 =  $value2['TOTAL_ITEM'];
            $desconto2 =  $value2['DESCONTO'];
            $acrescimo2 =  $value2['ACRESCIMO'];
            $acrescimo_rateio =  $value2['ACRESCIMO_RATEIO'];
            $desconto_rateio =  $value2['DESCONTO_RATEIO'];
            
            $cancelado2 =  $value2['CANCELADO'];
            $cancelado2 = "'$cancelado2'";
            
            $movimenta_estoque2 =  $value2['MOVIMENTA_ESTOQUE'];
            $movimenta_estoque2 = "'$movimenta_estoque2'";
            

            $desconto_acres = "NULL";
            $id_grade_itens = "NULL";

                     
            

            

         echo $id2."<br>".$item2."<br>".$id_produto2."<br>".$id_orcamento2."<br>".$id_quantidade2."<br>".$valor_unitario2."<br>... etc"."<br>";





            
            
        }
    }
}

 

Share this post


Link to post
Share on other sites

só um toque acho que ia ficar mais facil pros novatos entender o lance de repetir os children e dos foreachs se indentasse o bloco xml também tipo

 

<?xml version="1.0" encoding="utf-8"?>
<FDBS Version="15">
    <Manager UpdatesRegistry="True">
        <TableList>
            <Table Name="FDQuery2" SourceName="ORCAMENTO_ITENS" SourceID="1" TabID="0" EnforceConstraints="False" MinimumCapacity="50">
                <ColumnList>
                    <Column Name="ID" SourceName="ID" SourceID="1" DataType="Int32" Searchable="True" Base="True" OInUpdate="True" OInWhere="True" OInKey="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="ID"/>
                    <Column Name="ITEM" SourceName="ITEM" SourceID="2" DataType="Int32" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="ITEM"/>
                    <Column Name="ID_PRODUTO" SourceName="ID_PRODUTO" SourceID="3" DataType="Int32" Searchable="True" Base="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="ID_PRODUTO"/>
                    <Column Name="ID_ORCAMENTO" SourceName="ID_ORCAMENTO" SourceID="4" DataType="Int32" Searchable="True" Base="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="ID_ORCAMENTO"/>
                    <Column Name="QUANTIDADE" SourceName="QUANTIDADE" SourceID="5" DataType="FmtBCD" Precision="18" Scale="6" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="QUANTIDADE" SourcePrecision="18" SourceScale="6"/>
                    <Column Name="VALOR_UNITARIO" SourceName="VALOR_UNITARIO" SourceID="6" DataType="FmtBCD" Precision="18" Scale="6" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="VALOR_UNITARIO" SourcePrecision="18" SourceScale="6"/>
                    <Column Name="VALOR_CUSTO" SourceName="VALOR_CUSTO" SourceID="7" DataType="FmtBCD" Precision="18" Scale="6" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="VALOR_CUSTO" SourcePrecision="18" SourceScale="6"/>
                    <Column Name="VALOR_PRODUTOS" SourceName="VALOR_PRODUTOS" SourceID="8" DataType="FmtBCD" Precision="18" Scale="6" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="VALOR_PRODUTOS" SourcePrecision="18" SourceScale="6"/>
                    <Column Name="TOTAL_ITEM" SourceName="TOTAL_ITEM" SourceID="9" DataType="FmtBCD" Precision="18" Scale="6" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="TOTAL_ITEM" SourcePrecision="18" SourceScale="6"/>
                    <Column Name="DESCONTO" SourceName="DESCONTO" SourceID="10" DataType="FmtBCD" Precision="18" Scale="6" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="DESCONTO" SourcePrecision="18" SourceScale="6"/>
                    <Column Name="ACRESCIMO" SourceName="ACRESCIMO" SourceID="11" DataType="FmtBCD" Precision="18" Scale="6" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="ACRESCIMO" SourcePrecision="18" SourceScale="6"/>
                    <Column Name="ACRESCIMO_RATEIO" SourceName="ACRESCIMO_RATEIO" SourceID="12" DataType="FmtBCD" Precision="18" Scale="6" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="ACRESCIMO_RATEIO" SourcePrecision="18" SourceScale="6"/>
                    <Column Name="DESCONTO_RATEIO" SourceName="DESCONTO_RATEIO" SourceID="13" DataType="FmtBCD" Precision="18" Scale="6" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="DESCONTO_RATEIO" SourcePrecision="18" SourceScale="6"/>
                    <Column Name="CANCELADO" SourceName="CANCELADO" SourceID="14" DataType="AnsiString" Size="1" Searchable="True" AllowNull="True" FixedLen="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="CANCELADO" SourceSize="1"/>
                    <Column Name="MOVIMENTA_ESTOQUE" SourceName="MOVIMENTA_ESTOQUE" SourceID="15" DataType="AnsiString" Size="1" Searchable="True" AllowNull="True" FixedLen="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="MOVIMENTA_ESTOQUE" SourceSize="1"/>
                    <Column Name="DESC_ACRES" SourceName="DESC_ACRES" SourceID="16" DataType="AnsiString" Size="15" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="DESC_ACRES" SourceSize="15"/>
                    <Column Name="ID_GRADE_ITENS" SourceName="ID_GRADE_ITENS" SourceID="17" DataType="Int32" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="ID_GRADE_ITENS"/>
                </ColumnList>
                <ConstraintList/>
                <ViewList/>
                <RowList>
                    <Row RowID="0">
                        <Original ID="1" ITEM="1" ID_PRODUTO="1" ID_ORCAMENTO="1" QUANTIDADE="1" VALOR_UNITARIO="2.5" VALOR_CUSTO="0" VALOR_PRODUTOS="2.5" TOTAL_ITEM="2.5" DESCONTO="0" ACRESCIMO="0" ACRESCIMO_RATEIO="0" DESCONTO_RATEIO="0" CANCELADO="N" MOVIMENTA_ESTOQUE="N" DESC_ACRES=""/>
                    </Row>
                    <Row RowID="1">
                        <Original ID="2" ITEM="1" ID_PRODUTO="1" ID_ORCAMENTO="2" QUANTIDADE="1" VALOR_UNITARIO="2.5" VALOR_CUSTO="0" VALOR_PRODUTOS="2.5" TOTAL_ITEM="2.5" DESCONTO="0" ACRESCIMO="0" ACRESCIMO_RATEIO="0" DESCONTO_RATEIO="0" CANCELADO="N" MOVIMENTA_ESTOQUE="N" DESC_ACRES=""/>
                    </Row>
                </RowList>
            </Table>
        </TableList>
        <RelationList/>
        <UpdatesJournal>
            <Changes/>
        </UpdatesJournal>
    </Manager>
</FDBS>

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By TaisStream
      Como configurar essa query com inner join, no arquivo .xml?
      Me ajudem pf eu comecei mas estou perdida,  pesquisei já vi algo de /root... mas minha query esta diferente, nao sei se falta algo
       
       
      QUERY ATUAL:
      set mapreduce.job.queuename=low_relatorios; 
      set mapreduce.job.max.split.locations=100;
      SELECT a.num_msisdn,
             a.max_date
      FROM fact.dw_f_rcrg_gems_rate_subsc t
      INNER JOIN
        (SELECT num_msisdn,
                MAX(dat_operacao) AS max_date
         FROM fact.dw_f_rcrg_gems_rate_subsc
         WHERE (ref_date)>=$startdate
           AND ref_date<=$finaldate
           AND ide_plano_tarifario_atual IN (48,
                                             50,
                                             51,
                                             52,
                                             53,
                                             59,
                                             61,
                                             62,
                                             63,
                                             67,
                                             73,
                                             74)
         GROUP BY num_msisdn)a ON a.num_msisdn = t.num_msisdn
      AND a.max_date = t.dat_operacao
      WHERE ref_date>=$startdate
      AND ref_date<=$finaldate;
       
      QUERY CONFIGURANDO NO XML: 
       
          <value><![CDATA[[
      INSERT
              overwrite TABLE fact.dw_f_rcrg_gems_rate_subsc t 
              (
                      a.num_msisdn,
                      a.max_date
              )
      (SELECT
          INNER JOIN
      SELECT      
              MAX(dat_operacao) AS max_date;
      FROM fact.dw_f_rcrg_gems_rate_subsc) a
         WHERE (ref_date)>='$startdate'
           AND ref_date<=$'finaldate'
           AND ide_plano_tarifario_atual IN (48,
                                             50,
                                             51,
                                             52,
                                             53,
                                             59,
                                             61,
                                             62,
                                             63,
                                             67,
                                             73,
                                             74)
         GROUP BY num_msisdn)a ON a.num_msisdn = t.num_msisdn
                  AND a.max_date = t.dat_operacao
      WHERE ref_date>='$startdate'
      AND ref_date<=$finaldate;]]>
      </value>
       
       
      Poderiam me ajudar por favor, sou estagiario na area e ainda estou aprendendo.
    • By mjf2004
      Alguém poderia me ajudar com a solução dessa questão abaixo?
       
      Dado o seguinte esquema relacional para um banco de dados de uma academia , escreva uma definição DTD que do seu ponto de vista mapeie a estrutura desse banco de dados para um banco de dados XML.

      Alunos(RG, Nome, Endereço, Telefone, Sexo, Idade)
      Instrutores(RG, Nome, Endereço, Titulação)
      Turmas(Numero, Atividade, Horário, NoVagas,
      RGInstrutor ref Instrutores(RG) , RGMonitor ref Alunos(RG)
      Matricula(RG ref Alunos(RG), Numero ref Turmas(Numero), Ausências)
    • By sronze
      Ola estou com um problema em JavaScript
      O objetivo e digitar um ID/Nome em um input e ele buscar em um arquivo XML fazendo autocomplete e preencher outros dois inputs com os atributos associado ao ID/Nome da base XML.
       
      GIF de exemplo, obs(exatamente oque pretendo fazer): http://blog-media.chromaticsites.com.s3.amazonaws.com/google-places-autocomplete-3/autocomplete-error.gif
       
      Link do XML: https://www.w3schools.com/js/cd_catalog.xm
       
      Segue meu código:
      <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> <script src="https://code.jquery.com/jquery-1.12.4.js"></script> <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> </head> Nome:<input id="idInput"> UF:<input id="idInput02"> Ano:<input id="idInput03"> <script> var ValorXML1 = []; $(document).on('keyup' , '#idInput' ,function(){ var keyvalue = $("#idInput").val(); var xhttp; xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { ValorXML1 = []; CaregarXML(this , keyvalue); } }; xhttp.open("GET", "https://www.w3schools.com/js/cd_catalog.xml", true); xhttp.send(); }); function CaregarXML(xml , key) { var x, i, xmlDoc , key; xmlDoc = xml.responseXML; x = xmlDoc.getElementsByTagName("TITLE"); var cont = 0; for (i = 0; i < x.length; i++) { var valor = x[i].childNodes[0].nodeValue.trim(); var pattern = valor.substring(0 , key.length); if(key.toUpperCase() == pattern.toUpperCase() && cont < 5){ ValorXML1.push(valor); cont++; } } $("#idInput").autocomplete({ source: ValorXML1 }); } $( function() { $( "#idInput" ).autocomplete({ source:ValorXML1 }); }); </script>  
    • By Fernando Rafael
      Olá a todos, atualmente estou quebrando a cabeça com 3 campos da geração do XML de NFCE/NFE, são eles:   <SignatureValue> ,  <DigestValue>   e  <X509Certificate>, como  faço para gerar esses 3 campos?
       
      Procurei na internet, mas não achei nada que me ajude, gostaria de fazer 100% com php e de preferência  manualmente (sem a utilização de classes prontas na qual é difícil de entender o código).
       
      Já tenho o certificado em PFX, e já gerei um certificado do tipo PEM.
       
      OBS 1: não precisam explicar ou mandar códigos de como inserir o conteúdo gerado nas tags <SignatureValue>  e  <X509Certificate>.
       
      OBS 2: O campo <DigestValue>  notei em alguns fóruns que é um retorno da Sefaz, é correto isso?
       
      ,
    • By edionas
      como posso exibir os dados do arquivo
      http://api.tcm.ce.gov.br/sim/1_0/municipios.xml
      em uma tabela?
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.