【问题标题】:Getting information from xml php从 xml php 获取信息
【发布时间】:2010-10-25 09:28:50
【问题描述】:

我正在创建一个脚本,它将从用户的 ip 获取用户位置。 我看到了这个 api。但是知道如何将它们放入数组中并打印出来。

这是一个示例链接: http://ipinfodb.com/ip_query.php?ip=74.125.45.100&timezone=true

这是一个示例响应

<Response>
<Ip>74.125.45.100</Ip>
<Status>OK</Status>
<CountryCode>US</CountryCode>
<CountryName>United States</CountryName>
<RegionCode>06</RegionCode>
<RegionName>California</RegionName>
<City>Mountain View</City>
<ZipPostalCode>94043</ZipPostalCode>
<Latitude>37.4192</Latitude>
<Longitude>-122.057</Longitude>
<TimezoneName>America/Los_Angeles</TimezoneName>
<Gmtoffset>-25200</Gmtoffset>
<Isdst>1</Isdst>
</Response>

如何从数组中获取信息并打印?

【问题讨论】:

标签: php xml geolocation ip


【解决方案1】:

使用SimpleXml 实例并循环遍历所有children nodes

$url = 'http://ipinfodb.com/ip_query.php?ip=74.125.45.100&timezone=true';
$xml = new SimpleXmlElement($url, null, true);

$info = array();
foreach ($xml->children() as $child) {
    $name = $child->getName();
    $info[$name] = $xml->$name;
}

// info['Ip'] = '74.125.45.100', etc

【讨论】:

    【解决方案2】:

    您应该查看 simpleXML (http://php.net/manual/en/book.simplexml.php)

    使用 simpleXML,您可以执行以下操作:

    $xml = simplexml_load_file($xmlFile,'SimpleXMLElement', LIBXML_NOCDATA);
    $ip = (string) $xml->Ip;
    $status = (string) $xml->Status;
    

    【讨论】:

      【解决方案3】:

      SimpleXML,这是用PHP解析XML最简单的方法。

      【讨论】:

      • IMO,SimpleXML 中的“简单”并不是指它所声称的“简单”用法,而是指它应该使用的 XML 的复杂性,例如当您的 XML 很简单时,请使用 SimpleXML。否则使用 DOM。但是由于学习两个基于 DOM 的库是浪费时间,你也可以直接学习 DOM(或者如果你想要一个拉解析器,或者 XMLReader)
      猜你喜欢
      • 2015-09-09
      • 2013-10-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-04
      • 2020-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多