sco 0 Denunciar post Postado Setembro 2, 2011 Bom galera, estou há alguns dias tentando fazer uma leitura em um xml. Até consegui pegar alguns valores, mas não consigo montar o array do jeito que eu quero. Quero que o PHP leia uma estrutura parecida: <meta> <home> <titulo>titulo</titulo> <descricao>bla bla bla</descricao> <palavras>palavras</palavras> </home> <contato> <titulo>lalala</titulo> <descricao>texto</descricao> <palavras>lol</palavras> </contato> </meta> um array com home e os valores em um array onde home apontasse para titulo e seu conteudo, descrição e conteúdo... e assim por diante. Quero poder entender a idéia. Alguém me ajudar a fazer isso com XMLReader? Desde já agradeço =) Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Setembro 2, 2011 Faz assim: <?php $XML = <<<XML <meta> <home> <titulo>titulo</titulo> <descricao>bla bla bla</descricao> <palavras>palavras</palavras> </home> <contato> <titulo>lalala</titulo> <descricao>texto</descricao> <palavras>lol</palavras> </contato> </meta> XML; $DOMDocument = new DOMDocument( '1.0' , 'utf-8' ); $DOMDocument->preserveWhiteSpace = false; $DOMDocument->loadXML( $XML ); foreach ( $DOMDocument->getElementsByTagName( 'meta' ) as $Nodes ) { foreach ( $Nodes->getElementsByTagName( '*' ) as $Node ) { $Data[ $Node->parentNode->nodeName ][ $Node->nodeName ] = $Node->nodeValue; } $Dados[ $Nodes->nodeName ] = $Data; } unset( $Dados[ 'meta' ][ 'meta' ] ); echo '<pre>'; print_r( $Dados ); Utilizando DOMDocument, fica mais bacana .. pelo menos ( eu ) acho, saída: Array ( [meta] => Array ( [home] => Array ( [titulo] => titulo [descricao] => bla bla bla [palavras] => palavras ) [contato] => Array ( [titulo] => lalala [descricao] => texto [palavras] => lol ) ) ) Compartilhar este post Link para o post Compartilhar em outros sites
sco 0 Denunciar post Postado Setembro 5, 2011 Muito obrigado Andrey, era isso mesmo que eu queria. Usando o DOMDocument é muito mais fácil, passei mais de uma semana tentando com XMLReader e nada.... Vlw =) Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Setembro 5, 2011 Sim, mas o propósito do XMLReader é outro, você ele pra ler o XML em quanto for necessário. Compartilhar este post Link para o post Compartilhar em outros sites
sco 0 Denunciar post Postado Setembro 5, 2011 Hum... eu não sabia, obrigado mais uma vez. Considero este tópico como encerrado. Um abraço Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Setembro 5, 2011 Antes de encerrar... Como é que é, Andrey? Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Setembro 5, 2011 Como é que é, Andrey? DOMDocument não é legal pra ler documentos grandes, então se você tem um xml muuuuuuuuito grande, você usa XMLReader, aí você lê enquanto precisa. Por exemplo, você tem um XML com 1 milhão de nodes, então você precisa achar um kara que a posição da node dele é indefinida, ele pode estar em 999 ou 13333 ... com o XMLReader, você vai fazer tipo um ( é esse ? não ( continua ) : achei ( parei aqui ) ) .. Compartilhar este post Link para o post Compartilhar em outros sites
Savio Designer 0 Denunciar post Postado Setembro 6, 2011 genial isso.. :D Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Setembro 6, 2011 Ah tá! É que não tinha entendido pelo post anterior :P Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Setembro 6, 2011 Troquei as bolas, era 'não é legal pra ler documentos grandes' ! Compartilhar este post Link para o post Compartilhar em outros sites