-1

我需要从以下访问属性国家的值(不使用 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 ... ???
4

3 回答 3

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;
   }
}
于 2013-01-28T21:19:24.393 回答
0

我刚刚找到了两种方法,使用 [] 和使用 attributes()。

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;
}

我将把这个问题留到明天,以防万一其他人袖手旁观。

于 2013-01-28T21:07:52.107 回答
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);

出去;

大批
(
    [0] => 数组
        (
            [0] => <attribute name="country" value="IT"/>
        )

    [1] => 数组
        (
            [0] => IT
        )

)
于 2013-01-28T21:47:44.593 回答