2012-09-29 148 views
3

我正在研究連接到遠程API並以XML接收信息的腳本。XML解析兒童問題

我遇到的問題是我無法得到解析域:ns正確。下面

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中沒有'',所以這是行不通的。請參閱http://php.net/manual/en/simplexml.examples-basic.php以瞭解如何使用SimpleXml。 – Gordon

回答

1

訪問命名空間中的物品的方法是這樣的

$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); 

我不知道你幹活對整個XML結構,或者你想什麼用它做,所以我不能再繼續下去了。但是你可以從這裏開始處理你的代碼,並從 SimpleXMLElement::getNamespaces中獲得更好的動態解析器​​。