-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() を使用する 2 つの方法を見つけました。

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] => <属性名="国" 値="IT"/>
        )

    [1] => 配列
        (
            [0] => IT
        )

)
于 2013-01-28T21:47:44.593 に答える