silvamouro Posted May 8, 2008 at 08:56 AM Report Share #183947 Posted May 8, 2008 at 08:56 AM Como poderei passar para o PHP os dados que estao em XML? Por emplo tenho isto: <?xml version="1.0" encoding="UTF-8" ?> - <Dados> <Nome>M101</Nome> <Idade>2796</Idade> </Dados> Como consigo ir buscar estes dados ao XML? Quem me pudesse ajudar agradecia imenso! Link to comment Share on other sites More sharing options...
Kimico Posted May 8, 2008 at 09:32 AM Report Share #183949 Posted May 8, 2008 at 09:32 AM ha várias formas de o fazer, se tens conhecimento minimo de objectos usa simplexml_load_file() ou simplexml_load_string http://pt2.php.net/simplexml_load_file Link to comment Share on other sites More sharing options...
AndreLC Posted August 7, 2011 at 11:58 PM Report Share #406711 Posted August 7, 2011 at 11:58 PM A minha dúvida é a mesma... Como se procede para a partir de PHP ler os dados de um XML? Quer dizer, através de um XML exportar para uma base de dados em MySQL e ler em PHP? Alguém poderia dar umas luzes? Cumps echo ($knowledge != $sharing) ? "Serves no purpose!" : "Thank you for your help. It was very precious."; Link to comment Share on other sites More sharing options...
laboss Posted August 8, 2011 at 12:33 AM Report Share #406720 Posted August 8, 2011 at 12:33 AM olha le esse link k o Kimico meteu ai tens la um exemplo if (file_exists('test.xml')) { $xml = simplexml_load_file('test.xml'); echo "<pre>"; print_r($xml); echo "<\pre>"; } else { exit('Failed to open test.xml.'); } Isso devolve-te um array com os dados a partir dai podes fazer o que quiseres com os dados! Link to comment Share on other sites More sharing options...
AndreLC Posted August 8, 2011 at 01:22 AM Report Share #406732 Posted August 8, 2011 at 01:22 AM Obrigado pela ajuda laboss. Cumps echo ($knowledge != $sharing) ? "Serves no purpose!" : "Thank you for your help. It was very precious."; Link to comment Share on other sites More sharing options...
Knitter Posted August 8, 2011 at 09:57 AM Report Share #406748 Posted August 8, 2011 at 09:57 AM SimpleXML é muito bom para ler ficheiros XML rapidamente mas tem alguns problemas, ou pode gerar alguns. Nomeadamente o facto de que o que te é devolvido é um objecto especial, é um dos nós do XML mas é um recurso interno da libxml. Isso implica que não pode ser serializado, as conversões podem dar problemas e recomendo vivamente que faças conversão explicita dos valores. Atenção que no exemplo que te colocaram é o "echo" que está a fazer uma conversão automática para string de todo o objecto mas isso nem sempre acontece. //... $xml = simplexml_load_file('test.xml'); strval($xml->Dados->Nome); strval($xml->Dados->Idade); //ou intval, floatval, etc. www.sergiolopes.eu Link to comment Share on other sites More sharing options...
yoda Posted August 8, 2011 at 10:03 AM Report Share #406750 Posted August 8, 2011 at 10:03 AM Aconselho a validares com uma função tua o XML (ou com o DOMDocument) para que possas usar o SimpleXML (que é fácil de usar mas falha em muitos outros aspectos como lidar com ficheiros mal formatados). before you post, what have you tried? - http://filipematias.info sense, purpose, direction Link to comment Share on other sites More sharing options...
Knitter Posted August 8, 2011 at 10:05 AM Report Share #406752 Posted August 8, 2011 at 10:05 AM Aliás, se o ficheiro for pequeno utilizar o DOMDocument resolve quase todos os problemas que alguma vez encontrei com o SimpleXML. Esta última é bastante útil e simples de usar mas obriga a muitos cuidados se quiseres garantir que nada rebenta por causa dos dados do XML. www.sergiolopes.eu Link to comment Share on other sites More sharing options...
yoda Posted August 8, 2011 at 10:17 AM Report Share #406759 Posted August 8, 2011 at 10:17 AM Existe também esta classe, que uso para manipulação de html em web crawlers (funciona perfeitamente) : http://simplehtmldom.sourceforge.net/ before you post, what have you tried? - http://filipematias.info sense, purpose, direction Link to comment Share on other sites More sharing options...
AndreLC Posted August 8, 2011 at 10:45 AM Report Share #406777 Posted August 8, 2011 at 10:45 AM Estou um pouco confuso :S echo ($knowledge != $sharing) ? "Serves no purpose!" : "Thank you for your help. It was very precious."; Link to comment Share on other sites More sharing options...
Knitter Posted August 8, 2011 at 10:54 AM Report Share #406780 Posted August 8, 2011 at 10:54 AM Existem várias maneiras de ler ficheiros XML usando PHP. Usando a classe SimplXML tens uma forma simples e rápida de manipular ficheiros XML e os dados nele contidos, podes facilmente ler informação, acrescentar nós, enfim, manipular os dados do ficheiro. No entanto esta opção tem várias desvantagens, porque não é feita validação ao formato do XML e se este estiver inválido não é possível ler os dados, aquilo com que estás a trabalhar na verdade são recursos da libxml, não são objectos normais, o que implica alguns problemas em conversões e limitações no que podes fazer, apesar de parecerem objectos há situações onde não se comportam como tal. É mesmo assim uma boa maneira de ler, ganhas rapidez e facilidade de utilização mas perdes segurança. DOMDocument permite, também, ler ficheiros XML, é mais seguro porque oferece um conjunto de métodos e código de validação, permite trabalhar com os dados com a interface DOM familiar, permite formatar o ficheiro, enfim, é uma forma mais completa de ler ficheiros XML mas é mais pesado a nível de memória e exige mais código para manipular os dados. Outra forma ainda foi o que o yoda indicou, nunca usei essa classe mas parece ser uma boa opção. Resumindo, deves escolher a opção que se adequar melhor ao teu caso. SimpleXML, DOMDocument o u até a classe SimpelHTMLDom que o yoda indicou. www.sergiolopes.eu Link to comment Share on other sites More sharing options...
AndreLC Posted August 8, 2011 at 11:07 AM Report Share #406783 Posted August 8, 2011 at 11:07 AM Bem @Knitter, obrigado pela explicação e pelo tempo. Foi bastante esclarecedor. Estava a utilizar SimpleXML. Mas o que eu realmente necessito é exportar o conteúdo de vários ficheiros em XML para uma base de dados em mysql (sem repetir os que já lá se encontram) e de seguida então ler em PHP. A ideia é receber vários ficheiros XML com a informação de vários produtos e não repetir o conteúdo da exportação dos dados para a BD. E depois então ler em PHP. Os produtos têm a referência como chave, estava a pensar controlar por aí... mas estou meio confuso como proceder. A minha questão é cada vez que exportar os novos produtos verificar a referência para manter os antigos e não repetir... echo ($knowledge != $sharing) ? "Serves no purpose!" : "Thank you for your help. It was very precious."; Link to comment Share on other sites More sharing options...
Knitter Posted August 8, 2011 at 11:35 AM Report Share #406795 Posted August 8, 2011 at 11:35 AM Se os ficheiros XML são controlados por ti então usar o SimpleXML é mais simples. A partir do momento em que tens o ficheiro carregado é percorrer o objecto com um foreach ou aceder directamente aos nós como se atributos de objectos fossem. Verificar se já existem na BD é uma questão de fazer uma query antes de inserir e ver se a referência do produto já está na base de dados. Mas o melhor é começares pelo mais simples: ler o(s) ficheiro(s). Já consegues fazer isso? Ler os dados e mostrar o output no browser ou lá onde estás a usar isso? www.sergiolopes.eu Link to comment Share on other sites More sharing options...
AndreLC Posted August 8, 2011 at 11:43 AM Report Share #406802 Posted August 8, 2011 at 11:43 AM Sim, ler os dados consigo. A questão é mesmo exportar os dados para a base de dados em MySQL que construi e fazer essa condição... echo ($knowledge != $sharing) ? "Serves no purpose!" : "Thank you for your help. It was very precious."; Link to comment Share on other sites More sharing options...
yoda Posted August 8, 2011 at 01:02 PM Report Share #406819 Posted August 8, 2011 at 01:02 PM @AndreLC, Se quiseres que não sejam repetidos os dados, usa a instrução IGNORE: INSERT IGNORE INTO tabela VALUES (a,b,c); Se quiseres em vez de ignorar, actualizar o registo : INSERT INTO tabela (a, b, c) VALUES (va, vb, vc) ON DUPLICATE KEY UPDATE SET a = va, b = vb, c = vc, id=LAST_INSERT_ID(id); before you post, what have you tried? - http://filipematias.info sense, purpose, direction Link to comment Share on other sites More sharing options...
AndreLC Posted August 8, 2011 at 01:05 PM Report Share #406820 Posted August 8, 2011 at 01:05 PM Obrigado @yoda 😄 Mas agora como exporto para MySQL o que vem do XML? A questão já vem daqui, se quiseres ver https://www.portugal-a-programar.pt/topic/25-duvida-bd-em-xml-e-pagina-em-php/ Obrigado. echo ($knowledge != $sharing) ? "Serves no purpose!" : "Thank you for your help. It was very precious."; Link to comment Share on other sites More sharing options...
yoda Posted August 8, 2011 at 01:09 PM Report Share #406821 Posted August 8, 2011 at 01:09 PM Isso não é exportar, é importar. Basta fazeres em PHP um script para te importar a informação do XML como já foi indicado antes. before you post, what have you tried? - http://filipematias.info sense, purpose, direction Link to comment Share on other sites More sharing options...
AndreLC Posted August 8, 2011 at 01:18 PM Report Share #406825 Posted August 8, 2011 at 01:18 PM Sim, eu tinha importar depois mudei... Todo baralhado já... Mas a ideia está lá! 😄 echo ($knowledge != $sharing) ? "Serves no purpose!" : "Thank you for your help. It was very precious."; Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now