Arquivado
Este tópico foi arquivado e está fechado para novas respostas.
Recommended Posts
-
Conteúdo Similar
-
Por jfreiren
Olá pessoal, sou nova aqui no fórum e esto precisando muito da ajuda de vocês. É o seguinte. Tenho o seguinte XML em que preciso ler reescrever o item <preco> no seguinte formato(9999,99).
<?xml version="1.0" encoding="utf-8"?> <estoque> <veiculo> <id>998877</id> <placa>6050</placa> <marca id="14">AUDI</marca> <modelo id="72"> A5 </modelo> <versao id="434"> 2.0 16V Turbo Active </versao> <anofabricacao>2013</anofabricacao> <anomodelo>2014</anomodelo> <cambio id="1">Automático</cambio> <km>28160</km> <portas>4</portas> <cor id="11">Prata</cor> <combustivel id="5">Flex</combustivel> <preco>R$ 92.900,00</preco> <observacao> Veículo em excelente estado de conservação.</observacao> <complementos> <complemento id="5">IPVA Pago</complemento> <complemento id="6">Licenciado</complemento> <complemento id="10">Manual do proprietário</complemento> </complementos> <opcionais> <opcional id="54">Air bag</opcional> <opcional id="4">Alarme</opcional> <opcional id="6">Ar condicionado</opcional> <opcional id="8">Ar quente</opcional> <opcional id="12">Bancos de couro</opcional> <opcional id="15">Computador de bordo</opcional> <opcional id="18">Desembaçador traseiro</opcional> <opcional id="19">Direção elétrica</opcional> <opcional id="23">Freios ABS</opcional> <opcional id="29">Retrovisores elétricos</opcional> <opcional id="30">Rodas de liga leve</opcional> <opcional id="36">Travas elétricas</opcional> <opcional id="38">Vidros elétricos</opcional> <opcional id="39">Vidros verdes</opcional> <opcional id="1">Air bag do motorista</opcional> <opcional id="2">Air bag do passageiro</opcional> <opcional id="42">Alarme anti-furto</opcional> <opcional id="43">Alarme velocidade</opcional> <opcional id="62">Aviso sonoro de faróis acesos</opcional> <opcional id="9">Banco com regulagem elétrica</opcional> <opcional id="10">Banco do motorista com ajuste de altura</opcional> <opcional id="11">Banco traseiro bipartido</opcional> <opcional id="13">Bancos dianteiros com aquecimento</opcional> <opcional id="14">Check control</opcional> <opcional id="44">Coluna de direção com regulagem de altura</opcional> <opcional id="16">Controle automático de velocidade</opcional> <opcional id="17">Controle de tração</opcional> <opcional id="21">Encosto de cabeça traseiro</opcional> <opcional id="22">Faróis de milha</opcional> <opcional id="45">Freio a disco nas 4 rodas</opcional> <opcional id="41">Freios ABS c/ EBD</opcional> <opcional id="25">Piloto automático</opcional> <opcional id="48">Pintura metálica</opcional> <opcional id="26">Porta-copos</opcional> <opcional id="27">Relógio digital</opcional> <opcional id="55">Retrovisor com pisca</opcional> <opcional id="28">Retrovisor fotocrômico</opcional> <opcional id="64">Retrovisores na cor do veículo</opcional> <opcional id="31">Sensor de chuva</opcional> <opcional id="32">Sensor de estacionamento</opcional> <opcional id="53">Temporizador do limpador do para-brisa</opcional> <opcional id="40">Volante com regulagem de altura</opcional> <opcional id="57">Volante em couro</opcional> </opcionais> <acessorios> <acessorio id="30">Alto falantes dianteiros</acessorio> <acessorio id="31">Alto falantes traseiros</acessorio> <acessorio id="42">Brake light</acessorio> <acessorio id="65">Chave cópia</acessorio> <acessorio id="18">Farol xenônio</acessorio> <acessorio id="32">Antena no teto</acessorio> <acessorio id="71">Luz de cortesia no teto</acessorio> </acessorios> <fotos> <foto>fotos/6050_01.jpg</foto> <foto>fotos/6050_02.jpg</foto> <foto>fotos/6050_03.jpg</foto> </fotos> </veiculo> <veiculo> <id>778899</id> <placa>9262</placa> <marca id="39">FIAT</marca> <modelo id="332"> PALIO </modelo> <versao id="2369"> 1.6 MPI Sporting 16V </versao> <tipomotor/> <anofabricacao>2013</anofabricacao> <anomodelo>2014</anomodelo> <cambio id="3">Manual</cambio> <km>33000</km> <portas>4</portas> <cor id="4">Branco</cor> <combustivel id="5">Flex</combustivel> <preco>R$ 35.900,00</preco> <observacao> Veículo revisado, pneus em excelente estado.</observacao> <complementos> <complemento id="5">IPVA Pago</complemento> <complemento id="6">Licenciado</complemento> <complemento id="10">Manual do proprietário</complemento> </complementos> <opcionais> <opcional id="54">Air bag</opcional> <opcional id="4">Alarme</opcional> <opcional id="7">Ar condicionado digital</opcional> <opcional id="12">Bancos de couro</opcional> <opcional id="20">Direção hidráulica</opcional> <opcional id="23">Freios ABS</opcional> <opcional id="24">Limpador traseiro</opcional> <opcional id="29">Retrovisores elétricos</opcional> <opcional id="30">Rodas de liga leve</opcional> <opcional id="36">Travas elétricas</opcional> <opcional id="37">Trio elétrico</opcional> <opcional id="38">Vidros elétricos</opcional> <opcional id="39">Vidros verdes</opcional> <opcional id="44">Coluna de direção com regulagem de altura</opcional> <opcional id="45">Freio a disco nas 4 rodas</opcional> <opcional id="41">Freios ABS c/ EBD</opcional> <opcional id="26">Porta-copos</opcional> <opcional id="27">Relógio digital</opcional> </opcionais> <acessorios> <acessorio id="37">Banco traseiro rebatível</acessorio> <acessorio id="38">Bancos dianteiros reclináveis</acessorio> <acessorio id="39">Bancos revestidos em tecido</acessorio> </acessorios> <fotos> <foto>fotos/9262_01.jpg</foto> <foto>fotos/9262_02.jpg</foto> <foto>fotos/9262_03.jpg</foto> <foto>fotos/9262_04.jpg</foto> <foto>fotos/9262_05.jpg</foto> </fotos> </veiculo> </estoque> Acontece o seguinte, estou conseguindo ler os itens de primeiro nível e reescrever o valor <preco> no formato que desejo. O problema está na leitura dos itens que estão dentro dos nós <complementos>,<acessorios>, <opcionais> e <fotos>.
Estou usando o seuinte codigo:
<?php // Faz o load do arquivo XML e retorna um objeto $arquivo_xml = simplexml_load_file('modelo-xml.xml'); // Loop para ler o objeto for ( $j = 0; $j < count( $arquivo_xml ); $j++ ) { // Imprime o valor o valor da tag <id> echo $arquivo_xml->veiculo[$j]->id . '<br>'; // Imprime o valor o valor da tag <placa> echo $arquivo_xml->veiculo[$j]->placa . '<br>'; // Imprime o valor o valor da <marca> echo $arquivo_xml->veiculo[$j]->marca . '<br>'; // Imprime o valor o valor da <modelo> echo $arquivo_xml->veiculo[$j]->modelo . '<br>'; // Imprime o valor o valor da <versao> echo $arquivo_xml->veiculo[$j]->versao . '<br>'; // Imprime o valor o valor da <anomodelo> echo $arquivo_xml->veiculo[$j]->anomodelo . '<br>'; // Imprime o valor o valor da <image></image> echo $arquivo_xml->veiculo[$j]->cambio . '<br>'; // Imprime o valor o valor da <km> echo $arquivo_xml->veiculo[$j]->km . '<br>'; // Imprime o valor o valor da <potar> echo $arquivo_xml->veiculo[$j]->portas . '<br>'; // Imprime o valor o valor da <cor> echo $arquivo_xml->veiculo[$j]->cor . '<br>'; // Imprime o valor o valor da <combustivel> echo $arquivo_xml->veiculo[$j]->combustivel . '<br>'; // Imprime o valor o valor da <preco> echo str_replace(".","",substr( $arquivo_xml->veiculo[$j]->preco , 3)). '<br>'; // Imprime o valor o valor da description <image></image> echo $arquivo_xml->veiculo[$j]->observacao . '<br>'; foreach($arquivo_xml->veiculo as $key => $item) { echo $item->complementos->complemento.'</br>'; } // Apenas uma quebra de linha a mais echo '<hr>'; } ?> O resultado que me trás é este:
998877 6050 AUDI A% 2.0 16V Turbo Active 2014 Automático 28160 4 Prata Flex 92900,00 Veículo em excelente estado de conservação. IPVA Pago IPVA Pago 778899 9262 FIAT PALIO 1.6 MPI Sporting 16V 2014 Manual 33000 4 Branco Flex 35900,00 Veículo revisado, pneus em excelente estado. IPVA Pago IPVA Pago Como faço para que os itens dentro dos atributos complementos, acessorios, opcionais e fotos sejam lidos? e possa reescrever um XML com estes valores?
-
Por matheus.sdo
Bom dia amigos... estou quebrando a cabeça aqui, tenho um XML com a estrutura
<?xml version='1.0' ?> <meuxml> <Alunos> <Aluno1> <Nome>Carlos</Nome> <Idade>19</Idade> <Altura>1.58</Altura> <Peso>91kg</Peso> <ComidaFavorita>Frango</ComidaFavorita> </Aluno1> </Alunos> <Professores> <Professor1> <Nome>Augusto</Nome> <Idade>49</Idade> <Altura>1.78</Altura> <Peso>65kg</Peso> <ComidaFavorita>Capuccino</ComidaFavorita> </Professor1> </Professores> </meuxml> E para ler meu XML, fiz o seguinte:
$link = "C:/xampp/htdocs/XML/meuxml.xml"; //link do arquivo xml $arquivo_xml = simplexml_load_file($link); //carrega o arquivo XML e retornando um Array $contador = 0; echo '<pre>'; //print_r( $arquivo_xml ); //Percorrendo todas as tags Matheus (no caso somente 1) foreach($arquivo_xml->children() as $meuxml){ //percorrendo todas as tags dentro da tag Matheus foreach($meuxml->children() as $Aluno){ $contador++; echo "Nome do aluno ".$contador." - ".$Aluno->Nome."</br>"; echo "Idade do aluno ".$contador." - ".$Aluno->Idade."</br>"; echo "Peso do aluno ".$contador." - ".$Aluno->Peso."</br>"; echo "Altura do aluno ".$contador." - ".$Aluno->Altura."</br>"; echo "Comida do aluno ".$contador." - ".$Aluno->ComidaFavorita."</br><p>"; } } A idéia, é ler somente os alunos (depois iria implementar os professores), porém dessa forma, ele lê o meu aluno1, e também lê meu professor1.
Porém não mandei ele percorrer a tag Professores, e não entendi o que aconteceu.
Alguém saberia me explicar o que está acontecendo até aqui ? Depois, pensei em fazer um foreach (fora do $aluno) para ler os professores.
-