simplexml:访问属性country的值

时间:2013-01-28 20:36:27

标签: php simplexml

我需要从以下内容访问属性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 ... ???

3 个答案:

答案 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
        )

)