Разбор SOAP XML с помощью simplexml_load_string - PullRequest
0 голосов
/ 02 августа 2011

Я пытаюсь проанализировать простой ответ XML-мыла с simplexml_load_string безуспешно.Я уже пробовал множество способов, которые я нашел в других вопросах, но безуспешно.

XML-код:

<?xml version="1.0" encoding="utf-8" ?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
  <SOAP-ENV:Body>
    <m:F2bCobrancaRetorno xmlns:m="http://www.f2b.com.br/soap/wsbilling.xsd">
      <sacado numero="0000000015">
        <nome>Pedro Fernandes Steimbruch</nome>
        <email>pedrofsteimbruch@gmail.com</email>
      </sacado>
      <cobranca nosso_numero="0004912903" numero="0004912903" taxa_registro="0.00">
        <nome>Pedro Fernandes Steimbruch</nome>
        <email>pedrofsteimbruch@gmail.com</email>
        <url>http://www.f2b.com.br/Billing?id=eq5GuK</url>
      </cobranca>
      <log>OK&#13;</log>
    </m:F2bCobrancaRetorno>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Я хочу получить объекты журнала и URL.

1 Ответ

0 голосов
/ 19 августа 2011

Вы можете учитывать это, но этот документ XML использует пространства имен.Вот что означает двоеточие в теге XML.URI, приведенные в документе, теоретически указывают синтаксическому анализатору, где искать схему для элементов в этом пространстве имен.Чтобы сделать это с simpleXml, вам нужно проанализировать файл, чтобы получить URI для этого пространства имен, или в этом случае просто жестко закодировать его, то есть "http://www.f2b.com.br/soap/wsbilling.xsd". Затем вы передадите URI методу children () объекта SimpleXml.

В этом примере $ document содержит объект SimpleXML, содержащий данные SOAP. $ SubDocument - это новый документ SimpleXML, содержащий элементы из документа, которые находятся в пространстве имен «m».

   $subDocument = $document->children("http://www.f2b.com.br/soap/wsbilling.xsd");
   echo $subDocument->log;

Поскольку существует два пространства имен (SOAP_ENV и m), одно из которых вложено в другое, я не знаю, придется ли вам обращаться к «SOAP-ENV», прежде чем вы сможете получить доступ к «m», или вы можете перейти прямо к"m".

Эта страница обсуждает это. http://www.sitepoint.com/simplexml-and-namespaces/

...