2014-06-12 5 views
0

이 문제에 대한 해결책이 많이 있지만 코드가 작동하지 않습니다!네임 스페이스 정보로 XML 구문 분석

XML의 정보 : 개체 수에 대한

$s = '<?xml version="1.0" encoding="UTF-8"?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns2:resultado xmlns:ns2="http://webservice.consulta.spcjava.spcbrasil.org/" data="2014-06-03T11:37:32.001-03:00" restricao="false"><protocolo digito="2" numero="1204248496" /> ... 

$xml = simplexml_load_string($s); 

$x2 = $xml->children('http://schemas.xmlsoap.org/soap/envelope/')->Body->children('http://webservice.consulta.spcjava.spcbrasil.org/')->resultado->protocolo->digito; 

print_r($x2); 
var_dump(count($x2)); 

반환 널 (null) 0 :

<?xml version="1.0" encoding="UTF-8"?> 
    <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> 
     <S:Body> 
      <ns2:resultado xmlns:ns2="http://webservice.consulta.spcjava.spcbrasil.org/" data="2014-06-03T11:37:32.001-03:00" restricao="false"> 
      <protocolo digito="2" numero="1204248496" /> 
      .... other XML info 

내 코드. http://amigotechnotes.wordpress.com/2013/11/16/parse-xml-with-namespace-by-simplexml-in-php/

내 예를 들어 자신의 예와 다른 어디하지 않습니다

나는이 자습서를 따라했습니다. :/

누구든지이 문제를 도와 줄 수 있습니까?

답변

0

마지막으로 다른 구문을 사용하여 작동하게했습니다. 에 의해

$xml = simplexml_load_string($resultadoDocumento[0]["cdo_xml"]); 
$resultadoSPC = $xml->children('S', TRUE)->Body->children('ns2', TRUE)->children(); 

에 접속 노드 :

<?php foreach ($resultadoSPC->consumidor->children()->{"consumidor-pessoa-fisica"} as $consumidorElement) : ?> 
<?php echo $consumidorElement->attributes()->{"nome"}; ?> 
+1

당신은 접두사, URI를하지 변경할 수 있기 때문에, 접두사와 함께 작동 URI를 가진 두 번째 변형을 만들 수있어합니다. 귀하의 예를 들어, 그들은 상호 교환 적으로 작동해야합니다, 그래서 귀하의 답변 *에서 코드는 귀하의 질문에서 기술적으로 다르지 않습니다 *. 따라서 질문에는 이미 답변이 포함되어 있습니다. 즉, 귀하의 답변 (이 의미에서)은 실제 답변이 아님을 의미합니다. 문제의 근본 원인이 무엇인지 구체적으로 분석 한 것을 분명히해야합니다. – hakre

+0

@hakre 팁 주셔서 감사. 이 구문을 사용하면 효과가 있었기 때문에 대답을 수락 할 것이므로 필요로 할 때 도움이되었습니다. 다른 질문과 예제는 내 XML 구조와 다르며 XML 파일을 사용하는 초보자이기 때문에 유사한 구조를 사용하면 최대한 빨리 문제를 해결할 수 있습니다. 나는 그것이 다른 누군가를 돕기를 바랍니다. –