Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa Tarde Galera!
Comprei um livro, estou estudando a class DOMDocument mas estou com uma certa dificuldade em ler um XML do tipo abaixo com o PHP:
<a:loja>
<a:produtos>
<a:produto codigo="1234">Carrinho de Brinquedo</a:produto>
<a:cor>vermelho</a:vermelho>
<a:preco>R$ 25,00</a:preco>
</a:produtos>
<a:produtos>
<a:produto codigo="3214">Bola de Futebol</a:produto>
<a:cor>preto</a:vermelho>
<a:preco>R$ 15,00</a:preco>
</a:produtos>
<a:produtos>
<a:produto codigo="4321">Pula-pula</a:produto>
<a:cor>amarelo</a:vermelho>
<a:preco>R$ 7,00</a:preco>
</a:produtos>
</a:loja>
1º Como posso pegar o valor do "codigo" do primeiro produto (Carrinho de Brinquedo)?
2º Como posso pegar o valor (R$ 25,00) da tag <a:preco> do primeiro prinquedo (Carrinho de Brinquedo)?
3º Como saber quantos elementos tem na tag <a:loja>?
OBS.: Dou preferencia para DOMObject mas pode ser qualquer outro método
Eu sei como buscar dados em um XML sem prefixo, o problema é que o XML já está pronto, e está com prefixo tenho com buscar na estrutura que eu falei
Eu tou com o mesmo problema
Segue link: http://php.net/manual/pt_BR/simplexmlelement.getnamespaces.php
Ai adapta de acordo como quiseres!
valew Bruno mas já tentei mas ocorre este erro !!
Warning: SimpleXMLElement::__construct() [function.SimpleXMLElement---construct]: Entity: line 3828: parser error : Start tag expected, '<' not found inC:\wamp\www\ampar\xml\LancamentosContabeis.php on line 4
Warning: SimpleXMLElement::__construct() [function.SimpleXMLElement---construct]: in C:\wamp\www\ampar\xml\LancamentosContabeis.php on line 4
Warning: SimpleXMLElement::__construct() [function.SimpleXMLElement---construct]: ^ in C:\wamp\www\ampar\xml\LancamentosContabeis.php on line 4
Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in C:\wamp\www\ampar\xml\LancamentosContabeis.php:4 Stack trace: #0 C:\wamp\www\ampar\xml\LancamentosContabeis.php(4): SimpleXMLElement->__construct('? ? ? ? ? ...') #1 {main} thrown in C:\wamp\www\ampar\xml\LancamentosContabeis.php on line 4
Olha desisto kkk'
Me desculpa mas também não achei uma solução pra isso, tópico ficara aberto e eu também irei acompanhar pra ver se alguém responde!
simplexml_load_file("LancamentosContabeis.xml") or die ("erro");
será que existe um tamanho do arquivo estipulado no wamp pois o arquivo é 10 mega e quando eu coloquei "or die" ele mostra minha mensagem de erro como se não carregasse o arquivo!
com prefixo não sei D;
Difícil mesmo é tentar adivinhar como esta a estrutura de seu xml, o exemplo do post #1 é de 2008 esta totalmente errado, não é daquela forma que se estrutura namespace em xml
um exemplo básico de com usar namespace seria desta forma.
<?php
$xml = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<people xmlns:p="http://example.org/ns" xmlns:t="http://example.org/test">
<items>
<title>Name</title>
<p:person id="1">John Doe</p:person>
<p:person id="2">Susie Q. Public</p:person>
<p:person id="3">Fish Man</p:person>
</items>
<price>
<title>Price</title>
<p:price id="1">5</p:price>
<p:price id="2">10</p:price>
<p:price id="3">15</p:price>
</price>
</people>
XML;
$sxe = new SimpleXMLElement($xml);
foreach ($sxe as $out_ns) $ns = $out_ns->getNamespaces(true);
$child = $out_ns->children($ns['p']);
foreach ($child as $out)
{
echo $out . "<br />";
}
}meu xml nao foi eu que criei e sim próprio sagres pi agora 14/07/2014, apenas vou transcrever os dados para mysql.
Consegui obrigado a todos !
Manda como voce conseguiu Marcelo, porque outros tem o mesmo problema e muitos não conseguiram resolver, inclusive eu rs
tem como?
tá aí a demostração
<?php
$arquivo = file_get_contents("LancamentosContabeis.xml");
$xml = new SimpleXMLElement($arquivo);
$namespaces = $xml->getNamespaces(true);
foreach ($xml->children($namespaces["lan"]) as $dados) {
echo $dados->numeroRegiOuLancamento.'<br>';
echo $dados->historicoRegiContabil.'<br>';
}
?>
o post do Williams Duarte resolve !
Poderia ser:
para ler:<?php
//Carrego o arquivo XML