Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Wilker

xml dom

Recommended Posts

fala galera, to com 1 duvida e 1 problema:duvida - agora na versao 5 do PHP, a API DOM XML ainda é experimental?problema - onde tem uma boa documentacao do DOM XML (com exemplos, pq folear o manual do PHP q tem MUITAS classes no DOM ninguem merece...)eh isso, to tentando usar essa API, mas o negocio ta realmente dificil... e eu n sei c ela ainda eh experimental, e vejam uma coisa, baixem a documentacao do PHP (formato chm) e comparem com a do site do PHP, vao ver q ela ta bem diferente entre um e outro... oq dificulta + ainda... c alguem souber um lugar q tenha tutoriais mostrando como construir XML, editar, apagar e ler a partir do DOM eu agradeceria mtoobs: na versao 5 do php... pq eu ateh achei algumas, mas tavam todas antigas e as funcoes nem existem +...

Compartilhar este post


Link para o post
Compartilhar em outros sites

poxa cara, vou te falar a real, eu comecei a estudar xml faz +/- umas 2 ou 3 semanas, comecei tentando mexer com o dom, mais tambem nao obtive sucesso... mais dependendo doque voce quer fazer com xml nao precisa de dom...o que voce gostaria de fazer?quanto ao tuto de dom, se alguem achar tambem gostaria de dar uma lidaabracos

Compartilhar este post


Link para o post
Compartilhar em outros sites

kra, resolvi criar coragem e estudar pelo manual do PHP, e tive bons resultados:sim, a API do DOM ja nao eh + experimental, a partir do 5 ela eh fixabom kra, c você estudar bem pelo manual, ela ateh q n eh dificil, as classes dentro dela você n precisa da maior parte, e os metodos tem varios quase q repetidoseu vo estudar bem ela, e estarei em breve postando um tutorial completo sobre elauma coisa, a documentacao em formato windows compilado (chm) nao foi atualizada com a nova DOM, entao para baixar a documentacao da API, você tem baxar no formato HTMLo motivo deu querer usar DOM sao 21 - eu detesto aquele metodo de criar metodos para iniciar e finalizar tags, acho akilo a pior coisa que existe2 - eu preciso ter controle sobre a estrutura do XML, alterando, delentando e inserindo valores de forma aletaria (em qualquer parte do XML), e soh o DOM me permite issoe outra kra, qdo eu trabalho com APIs como o SAX, eu me sinto editando o arquivo manualmente... por isso eu n gosto mesmo :P

Compartilhar este post


Link para o post
Compartilhar em outros sites

humm, mais da para editar e deletar sim, por fso, enfim, eu ja tinha tentado estudar dom la no php.net, mais a maioria dos metodos não tem exemplo, e eu não consegui pegar o espirito da coisa, por exemplo:

$dom = new DomDocument;$dom->preserveWhiteSpace = FALSE;$dom->load("arquivo.xml");$params = $dom->getElementsByTagName('titulo');foreach ($params as $param) {      echo $param -> getAttribute('value').'<br>';}

só me retorna 1 valor :S, isso é logicamente impossivel =/, depois disso desencanei do dom, mais vo ver se acho alguma apostila tambem, qualquer coisa eu posto[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem um livro de PHP5 q ensina com varios exemplos, mas eu so consegui toca nesse livro 1 vez... ai ferro o sistema, mas depois eu vejo c consigo coloca a mao nele d novomas tipo, esse seu exemplo ai parece correto, n entendi o fato dele soh retornar um valor, acho q o problema ta no xml, posta com td ai, e outra, pode ter ocorrido um erro de acentos q eh mto comum, pra corrigir o problema de acentos, na hora de instancia o documento faca assim:$dom = new DOMDocument("1.0", "ISO-8859-1");

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom causa disso desisti, eu achei como tinha feito, ta aqui:

<?$dom = new DOMDocument("1.0", "ISO-8859-1");$dom->preserveWhiteSpace = FALSE;$dom->load("teste.xml");$params = $dom->getElementsByTagName('titulo');foreach ($params as $param) {      echo $param -> getAttribute('value').'<br>';}?>

e

<?xml version="1.0" encoding="ISO-8859-1" ?><rss version="2.0">  <info>      <item id="f2496f189fc0568e5aee00157435fcc6">        <titulo>A Feira</titulo>        <cantor>O Rappa</cantor>        <duracao>5 min</duracao>      </item>      <item id="4a31ebc41e680fe6ac187cdc9a7214f7">        <titulo>Navio Negreiro</titulo>        <cantor>O Rappa</cantor>        <duracao>5 min</duracao>      </item>      <item id="7732f7e12490ad4a87efdfada9f92335">        <titulo>Hey Joe</titulo>        <cantor>O Rappa</cantor>        <duracao>5 min</duracao>      </item>  </info></rss>

agora eu testei e nao retornou nem 1 registro =[, pifo de vez[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom causa disso desisti, eu achei como tinha feito, ta aqui:

 

<?

 

$dom = new DOMDocument("1.0", "ISO-8859-1");

$dom->preserveWhiteSpace = FALSE;

$dom->load("teste.xml");

$params = $dom->getElementsByTagName('titulo');

 

foreach ($params as $param) {

      echo $param -> getAttribute('value').'<br>';

}

 

?>

e

 

<?xml version="1.0" encoding="ISO-8859-1" ?>

<rss version="2.0">

   <info>

      <item id="f2496f189fc0568e5aee00157435fcc6">

         <titulo>A Feira</titulo>

         <cantor>O Rappa</cantor>

         <duracao>5 min</duracao>

      </item>

      <item id="4a31ebc41e680fe6ac187cdc9a7214f7">

         <titulo>Navio Negreiro</titulo>

         <cantor>O Rappa</cantor>

         <duracao>5 min</duracao>

      </item>

      <item id="7732f7e12490ad4a87efdfada9f92335">

         <titulo>Hey Joe</titulo>

         <cantor>O Rappa</cantor>

         <duracao>5 min</duracao>

      </item>

   </info>

</rss>

agora eu testei e nao retornou nem 1 registro =[, pifo de vez

[]'s

<{POST_SNAPBACK}>

seu erro eh simples kra :)

 

o metodo getAttribute eh usado para pegar valores internos da tag (por exemplo, o valor id q você colocou na tag item), e n pra pegar o valor do conteudo, coloca essa linha assim agora:

 

echo $param->nodeValue . '<br>';

 

testa ai e me dix oq aconteceu ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

EUehuheuehe funcionou, se nao sabe quanto tempo eu fiquei nisso, valeu cara :P , ahhh se nao for pedir muito voce poderia dar um exemplo de adicao ou edicao ou "apagacao" qualquer um deles, é que nao achei nada no php.netbrigado viu ?[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

pelo jeito você soh ta olhando os metodos dos objetos, olha pra as propriedades tb, pra alterar, apagar, ou adicionar eh soh você usar essa mesma variavel (nodeValue), exemplo, pra alterar$param->nodeValue = "novo valor";e assim por diante ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

legal isso,mais acho que ainda nao peguei a logica do dom... porque eu nao consegui nem alterar como voce falou... porque, ele exibe certo, mais nao altera la no xml, mais o certo seria ele alterar o xml ? ou estou na logica errada?valeus a aula, e malz ai o abuso[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

q nada, abuso nada, eu e você tamo aprendendo isso agora, mas tipo, soh uma coisinha... depois de mandar ele alterar, você lembrou de mandar ele salvar o documento novamente?

Compartilhar este post


Link para o post
Compartilhar em outros sites

:$, :P eu tinha realmente esquecido desse detalhe, novamente obrigado :P acho que ja peguei a logica da coisa, ja consegui : editar, deletar, so nao consegui adicionar, e tambem quando eu deleto um item ele ainda "fica la" ele fica:

<item id="4a31ebc41e680fe6ac187cdc9a7214f7"/>

quando eu deleto algo, nao deveria deletar tambem isso ?e adicionar eu nao consegui mesmo...de qualquer jeito nao vou mais incomodar :P valeu a aula[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

relaxa kra, eh q pra remover nodes completos tem outras funcoes, aguarda o meu tutorial q eu vo demonstra essas coisas todas, pretendo termina esse tutorial ainda essa semana ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.