Pegar conteudo entre as tags do XML

651 views
Skip to first unread message

J.e.a.n.

unread,
Nov 10, 2008, 7:46:16 AM11/10/08
to PHP Avançado
Bom dia pessoal, estou mexendo com PHP+XML e estou com umas dúvidas...

1º - Estou usando o nusoap para consumir um webservice, até ae tudo
bem, porém o nusoap está me retornando o seguinte xml:

<?xml version="1.0" encoding="utf-8"?><soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/
XMLSchema"><soap:Body><nfeStatusServicoNFResponse xmlns="http://
www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico"><nfeStatusServicoNFResult><?xml
version="1.0" encoding="utf-8"?><retConsStatServ versao="1.07"
xmlns="http://www.portalfiscal.inf.br/nfe"><tpAmb>2</
tpAmb><verAplic>SVRS20080807095546</verAplic><cStat>107</
cStat><xMotivo>Servico em Operacao</xMotivo><cUF>42</
cUF><dhRecbto>2008-11-07T14:49:59</dhRecbto><tMed>1</tMed></
retConsStatServ></nfeStatusServicoNFResult></
nfeStatusServicoNFResponse></soap:Body></soap:Envelope>

Eu gostaria de pegar somente isto:

<?xml version="1.0" encoding="utf-8"?><retConsStatServ versao="1.07"
xmlns="http://www.portalfiscal.inf.br/nfe"><tpAmb>2</
tpAmb><verAplic>SVRS20080807095546</verAplic><cStat>107</
cStat><xMotivo>Servico em Operacao</xMotivo><cUF>42</
cUF><dhRecbto>2008-11-07T14:49:59</dhRecbto><tMed>1</tMed></
retConsStatServ>

Somente o xml propriamente dito, sem a parte do soap...é possivel?

2º - talvez isso seja a mesma coisa do problema anterior...eu gostaria
de pegar o conteudo que estivesse entre a tag <xMotivo></xMotivo> ou
seja:

Servico em Operacao

Alguém poderia me ajudar? Sou bem mirim ainda no PHP!

Desde já agradeço

att,
Jean

Luiz Felipph

unread,
Nov 10, 2008, 7:53:51 AM11/10/08
to phpav...@googlegroups.com
Procura na documentação do PHP a classe SimpleXML, acredito que ela será útil pra você

Abraço!

2008/11/10 J.e.a.n. <jea...@gmail.com>



--
.:  |Luiz Felipph
.:  |Web Developer(PHP)
.:: |Linux User #434361

Jose Neto

unread,
Nov 10, 2008, 8:03:28 AM11/10/08
to phpav...@googlegroups.com
Jean, eu tive já experiência com a nuSOAP e confesso que não foram muito boas. Não consegui rodar no PHP 5.2

A solução foi usar o SOAP nativo do PHP: http://br.php.net/manual/pt_BR/book.soap.php
Lá ele ensina como configurar e como usar. E para passar um XML estude p SimpleXML como o Luiz Felipph mencionou.

Abraços

--
Atenciosamente,
José Neto
Analista de Sistemas
81 94696930

2008/11/10 Luiz Felipph <luizf...@gmail.com>

Jean paulo

unread,
Nov 10, 2008, 8:07:52 AM11/10/08
to phpav...@googlegroups.com
Olá José....o problema que o projeto está particamente pronto em
nusoap, porém eu preciso pegar somente esse xml e buscar a informação
dentro de uma tag, então o projeto estará concluído...

Jean paulo

unread,
Nov 10, 2008, 2:34:40 PM11/10/08
to phpav...@googlegroups.com
Olá pessoal, consegui resolver o problema anterior...

agora me surgiu outra dúvida...

meu xml tem 2 campos com o mesmo nome...porém estão dentro de tags
diferentes por exemplo:

<tag1>
<meu_campo></meu_campo>
</tag1>
<tag2>
<meu_campo></meu_campo>
</tag2>

então fiz o seguinte:
if (!$meuxml = simplexml_load_string ($filename))
echo 'Erro ao ler ficheiro XML';
else if ($meuxml = simplexml_load_string ($filename))
{
echo "<script>alert('$meuxml->meu_campo');</script>";
echo "<script language=\"JavaScript\">window.location.href
= 'home.html';</script>";
}


com a variavel $meuxml->meu_campo, eu consigo acessar o primeiro
campo...mas não estou conseguindo acessar o segundo campo...

Alguém poderia me ajudar?

Obrigado pessoal!

Jean paulo

unread,
Nov 11, 2008, 6:15:04 AM11/11/08
to phpav...@googlegroups.com
Bom dia...ngm tem alguma dica para meu problema? Vou dar outro exemplo
para ficar mais claro:

meu simplexml_load_string está me retornando a seguinte estrutura:

object(SimpleXMLElement)#7 (7) { ["@attributes"]=> array(1) {
["versao"]=> string(4) "1.10" } ["tpAmb"]=> string(1) "2"
["verAplic"]=> string(18) "SVRS20080807100051" ["cStat"]=> string(3)
"103" ["xMotivo"]=> string(25) "Lote recebido com sucesso" ["cUF"]=>
string(2) "42" ["infRec"]=> object(SimpleXMLElement)#5 (3) {
["nRec"]=> string(15) "423000001055525" ["dhRecbto"]=> string(19)
"2008-11-11T09:03:25" ["tMed"]=> string(1) "1" } }

Consigo acessar qualquer campo que esteja dentro do
object(SimpleXMLElement)#7 ou seja: versão,tpAmb, verAplic, cStat,
xMotivo, cUF, porém nao estou conseguindo acessar o conteudo dos
campos que estão dentro do ["infRec"]=> object(SimpleXMLElement)#5.

Com o comando meuxml->xMotivo eu leio o campo xMotivo, para acessar os
dados do object(SimpleXMLElement)#5, já tentei usar
meuxml->infRec->nRec mas não adiantou,,,

Alguma dica???
Atenciosamente,
Jean Dias

Jean paulo

unread,
Nov 11, 2008, 8:44:08 AM11/11/08
to phpav...@googlegroups.com
Problema resolvido...o que eu fiz...joguei meuxml->infRec->nRec para
$variavel e dei um echo na $variavel.

Atenciosamente,
Jean Dias

Reply all
Reply to author
Forward
0 new messages