我有这段代码
$xml = simplexml_load_file("http://api.hostip.info/?ip=12.215.42.19");
echo $xml->getName() . "<br />";
foreach($xml->children() as $child) {
echo $child->getName() . ": " . $child . "<br />";
}
如果我直接在浏览器上访问http://api.hostip.info/?ip=12.215.42.19,我可以看到XML返回,但是当我尝试上面的代码时,只有HostipLookupResultSet<br />
被回显。
如何从此xml中检索数据?我有兴趣获得国家和国家的缩写。
我正在尝试类似echo $xml->HostipLookupResultSet->gml:featureMember->Hostip->countryName
的内容,但似乎这是错误的。
答案 0 :(得分:3)
如果您query using xpath: -
,这可能会有效// optional for register namespace into xpath
$xml->registerXPathNamespace('gml', 'http://www.opengis.net/gml');
$result = $xml->xpath('//*[self::countryName or self::countryAbbrev]');
答案 1 :(得分:1)
您需要添加命名空间。 请参阅下面的代码
/* @var $xml SimpleXMLElement */
echo $xml->getName() . "\n";
$namespaces = $xml->getDocNamespaces();
foreach($xml->children($namespaces['gml']) as $child) {
echo $child->getName() . ": " . $child . "\n";
}
答案 2 :(得分:0)
You can try the following code for getting Country and Country Abbrevation:
$xml = simplexml_load_file("http://api.hostip.info/?ip=12.215.42.19");
$cntry= $xml->xpath('//gml:featureMember');
foreach($cntry as $child) {
echo $child->Hostip->countryName;
echo "<br />";
echo $child->Hostip->countryAbbrev;
}