我需要从以下内容访问属性country的值(不使用xpath): http://apps.db.ripe.net/whois/lookup/ripe/inetnum/79.6.54.99.xml
这是我到目前为止所做的事情
$xml = simplexml_load_file("http://apps.db.ripe.net/whois/lookup/ripe/inetnum/79.6.54.99.xml");
$country = $xml->objects->object->attributes->attribute ... ???
答案 0 :(得分:2)
$xml = simplexml_load_file('http://apps.db.ripe.net/whois/lookup/ripe/inetnum/79.6.54.99.xml');
foreach ($xml->objects->object->attributes->attribute as $attr) {
if ($attr->attributes()->name == 'country') {
echo $attr->attributes()->value;
}
}
答案 1 :(得分:0)
我刚刚找到了两种方法,使用[]和属性()。
foreach(simplexml_load_file("http://apps.db.ripe.net/whois/lookup/ripe/inetnum/79.6.54.99.xml")->objects->object->attributes->attribute as $a){
if($a['name'] == 'country')
if(in_array($a['value'],array('IT'))) exit;
else break;
}
我将这个问题保持开放直到明天,以防万一其他人都有他/她的袖子。
答案 2 :(得分:0)
这有效;
$s = simplexml_load_file("http://apps.db.ripe.net/whois/lookup/ripe/inetnum/79.6.54.99.xml");
foreach ($s->objects->object->attributes->attribute as $attr) {
$attrs = $attr->attributes();
if ((string) $attrs->name == "country") {
$country = (string) $attrs->value;
break;
}
}
print $country; // IT
但如果它适合你,也有一个选项;
$s = file_get_contents("http://apps.db.ripe.net/whois/lookup/ripe/inetnum/79.6.54.99.xml");
preg_match_all('~<attribute\s+name="country"\s+value="(.*?)".*?/>~i', $s, $m);
print_r($m);
出;
Array ( [0] => Array ( [0] => <attribute name="country" value="IT"/> ) [1] => Array ( [0] => IT ) )