Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php从url解析xml_Php_Xml_Parsing - Fatal编程技术网

php从url解析xml

php从url解析xml,php,xml,parsing,Php,Xml,Parsing,通过此链接(xml),我尝试检索countryName和countryAbbrev,如下所示: $url = 'http://api.hostip.info/?ip=87.14.94.152'; $xml = simplexml_load_file($url) or die("feed not loading"); $Country = $xml->gml['featureMember']->Hostip->countryName; echo $Country; echo 'B

通过此链接(xml),我尝试检索countryName和countryAbbrev,如下所示:

$url = 'http://api.hostip.info/?ip=87.14.94.152';
$xml = simplexml_load_file($url) or die("feed not loading");
$Country = $xml->gml['featureMember']->Hostip->countryName;
echo $Country;
echo 'BREAK HTML';
echo "-----";
echo "// "; var_dump($xml); echo " //";
但是$Country是空白的,你知道吗

提前感谢

试试这个:

$url = 'http://api.hostip.info/?ip=87.14.94.152';
$xml = simplexml_load_file($url) or die("feed not loading");

$fm=$xml->xpath('//gml:featureMember');
print_r($fm[0]->Hostip->countryName);
试试这个:

$url = 'http://api.hostip.info/?ip=87.14.94.152';
$xml = simplexml_load_file($url) or die("feed not loading");

$fm=$xml->xpath('//gml:featureMember');
print_r($fm[0]->Hostip->countryName);

countryName
节点嵌套在更深层次。您可以使用该方法通过冒号访问属性。以下是获取国家名称的方法:

$countryName = (string) $xml->children('gml', true)
                            ->featureMember->children('', true)
                                ->Hostip->countryName; // => ITALY
还可以使用XPath表达式检索国家名称。这更容易:

$hostip = $xml->xpath('//Hostip'); 
$countryName = $hostip[0]->countryName;       // => ITALY
$countryAbbrev = $hostip[0]->countryAbbrev;   // => IT

countryName
节点嵌套在更深层次。您可以使用该方法通过冒号访问属性。以下是获取国家名称的方法:

$countryName = (string) $xml->children('gml', true)
                            ->featureMember->children('', true)
                                ->Hostip->countryName; // => ITALY
还可以使用XPath表达式检索国家名称。这更容易:

$hostip = $xml->xpath('//Hostip'); 
$countryName = $hostip[0]->countryName;       // => ITALY
$countryAbbrev = $hostip[0]->countryAbbrev;   // => IT

制作xml的本地副本,它就会工作。刚刚测试了这个并得到了数据:

$url = 'http://api.hostip.info/?ip=87.14.94.152';
$data = file_get_contents($url);
$xml = simplexml_load_file($data) or die("feed not loading");

制作xml的本地副本,它就会工作。刚刚测试了这个并得到了数据:

$url = 'http://api.hostip.info/?ip=87.14.94.152';
$data = file_get_contents($url);
$xml = simplexml_load_file($data) or die("feed not loading");

我同意。我两个答案都试过了,结果都很好。以下是我刚刚运行的测试代码:

<?php
$url = 'http://api.hostip.info/?ip=87.14.94.152';
// $data = file_get_contents($url);
$xml = simplexml_load_file($url) or die("feed not loading");
// $Country = $xml->gml['featureMember']->Hostip->countryName;
// echo $Country;
echo 'BREAK HTML';
echo "-----";
echo "// "; var_dump($xml); echo " //<br/>";
?><br/><?php
var_dump($xml->gml);
?><br/><?php
print_r($xml);
?><br/><?php
var_dump((string) $xml->gml->featureMember->Hostip->countryName);
?><br/><?php
echo $xml->gml['featureMember']->Hostip->countryName;
$Country = (string) $xml->children('gml', true)
                            ->featureMember->children('', true)
                                ->Hostip->countryName; // => ITALY
echo $Country;
$fm=$xml->xpath('//gml:featureMember');
print_r($fm[0]->Hostip->countryName);

我同意。我两个答案都试过了,结果都很好。以下是我刚刚运行的测试代码:

<?php
$url = 'http://api.hostip.info/?ip=87.14.94.152';
// $data = file_get_contents($url);
$xml = simplexml_load_file($url) or die("feed not loading");
// $Country = $xml->gml['featureMember']->Hostip->countryName;
// echo $Country;
echo 'BREAK HTML';
echo "-----";
echo "// "; var_dump($xml); echo " //<br/>";
?><br/><?php
var_dump($xml->gml);
?><br/><?php
print_r($xml);
?><br/><?php
var_dump((string) $xml->gml->featureMember->Hostip->countryName);
?><br/><?php
echo $xml->gml['featureMember']->Hostip->countryName;
$Country = (string) $xml->children('gml', true)
                            ->featureMember->children('', true)
                                ->Hostip->countryName; // => ITALY
echo $Country;
$fm=$xml->xpath('//gml:featureMember');
print_r($fm[0]->Hostip->countryName);






试一下这个方法,不要像回答一样,而是用另一种方法:

$data = file_get_contents('http://api.hostip.info/get_html.php?ip=87.14.94.152&position=true');

$arrayofdata = explode("\n", $data);
$country = explode(":", $arrayofdata[0]);
$count = explode(" ", $country[1]);

echo "Country Name: ".$count[1]."</br>";    //Prints ITALY
echo "Country Abbv: ".trim($count[2],"()"); //Prints IT
$data=file\u get\u contents('http://api.hostip.info/get_html.php?ip=87.14.94.152&position=true');
$arrayofdata=explode(“\n”,$data);
$country=explode(“:”,$arrayofdata[0]);
$count=explode(“,$country[1]);
echo“国家名称:”.$count[1]。“
”//意大利版画 echo“Country Abbv:.trim($count[2],”()”)//打印出来
position=true url部分,只是为了防止您想要检索坐标


干杯;)

试着这样做,不要像回答一样,而是另一种方法:

$data = file_get_contents('http://api.hostip.info/get_html.php?ip=87.14.94.152&position=true');

$arrayofdata = explode("\n", $data);
$country = explode(":", $arrayofdata[0]);
$count = explode(" ", $country[1]);

echo "Country Name: ".$count[1]."</br>";    //Prints ITALY
echo "Country Abbv: ".trim($count[2],"()"); //Prints IT
$data=file\u get\u contents('http://api.hostip.info/get_html.php?ip=87.14.94.152&position=true');
$arrayofdata=explode(“\n”,$data);
$country=explode(“:”,$arrayofdata[0]);
$count=explode(“,$country[1]);
echo“国家名称:”.$count[1]。“
”//意大利版画 echo“Country Abbv:.trim($count[2],”()”)//打印出来
position=true url部分,只是为了防止您想要检索坐标


干杯;)

您应该将
var_dump($xml)
的结果添加到问题中。BREAK HTML------//object(simplexmlement){[“@attributes”]=>array(1){[“version”]=>string(5)“1.0.1”}//您应该将
var_dump($xml)
的结果添加到问题中。BREAK HTML-----//object object simplexmlement(simplexmlement){1(1){[“@attributes”]=>array(1){[“version”]=>string(5)“1.0.1”}///Hi-tenks提前但$countryAbbrev提前返回[object object]Hi-tenks但$countryAbbrev返回[object object]