2012-09-29 128 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中获得更好的动态解析器​​。