2012-09-29 2 views
3

원격 API에 연결하고 XML로 정보를받는 스크립트를 작성하고 있습니다.XML 구문 분석 하위 문제

문제는 내가 도메인을 파싱 할 수 없다는 것입니다. 아래

XML :

$xml= '<?xml version="1.0" encoding="UTF-8"?> 
<response xmlns:domain="http://www.eurodns.com/domain" xmlns:eurodns="http://www.eurodns.com/eurodns"> 
<extension> 
    <eurodns:domain> 
    <domain:ns addr="176.31.236.123">ns1.it-joan.pl</domain:ns> 
    <domain:ns addr="89.72.43.135">ns2.it-joan.pl</domain:ns> 
    </eurodns:domain> 
</extension> 
</response>'; 

$xml = new SimpleXMLElement($xml); 
     foreach($xml->resData as $value) 
     { 
       $array[] = $value->children('http://www.eurodns.com/eurodns'); 
     } 
+0

XML에 ''이 (가) 없으므로 작동하지 않습니다. SimpleXml 사용법은 http://php.net/manual/en/simplexml.examples-basic.php를 참조하십시오. – Gordon

답변

1

네임 스페이스가 항목에 액세스하는 방법은 내가 전체 XML 당신이 일하는있는 구조, 또는 당신이 원하는 모르는이

$xml= '<?xml version="1.0" encoding="UTF-8"?> 
<response xmlns:domain="http://www.eurodns.com/domain" xmlns:eurodns="http://www.eurodns.com/eurodns"> 
<extension> 
    <eurodns:domain> 
    <domain:ns addr="176.31.236.123">ns1.it-joan.pl</domain:ns> 
    <domain:ns addr="89.72.43.135">ns2.it-joan.pl</domain:ns> 
    </eurodns:domain> 
</extension> 
</response>'; 
$xml = new SimpleXMLElement($xml); 
$eurodns = $xml->extension->children('http://www.eurodns.com/eurodns'); 
$domain = $eurodns->children('http://www.eurodns.com/domain'); 

print_r($domain); 

같다 그것으로해라. 그러면 나는 더 이상 갈 수 없다. 그러나 더 나은 동적 파서를 위해 SimpleXMLElement::getNamespaces에서 코드를 작업 할 수 있습니다.