第一个和第二个最后的xml节点

时间:2010-08-19 15:44:11

标签: php xml nodes

我只想要第一个和第二个最后的Area节点 - 我怎么能在这里做到这一点?

$url = "http://developer.multimap.com/API/geocode/1.2/OA10081917657704697?qs=Byker&countryCode=GB";
   $results = simplexml_load_file($url);
    foreach($results->Location as $location) {
        echo "<hr />";
        foreach($location->Address as $address) {
            foreach($address->Areas as $areas) {
                foreach($areas->Area as $area) {
                    echo $area;
                    echo "<br />";
                }
            }
        }
   }

2 个答案:

答案 0 :(得分:2)

更新:如果你有这些foreach-loop,你可以简单地使用:

$url = "http://developer.multimap.com/API/geocode/1.2/OA10081917657704697?qs=Byker&countryCode=GB";
$results = simplexml_load_file($url);
foreach($results->Location as $location) {
  foreach($location->Address as $address) {
    foreach( $address->Areas as $areas) {
      // <-- todo: add test if those two elements exist -->
      echo $areas->Area[0], ' - ', $areas->Area[count($areas->Area)-1], "\n";
    }
  }
}

您可以使用XPath

<?php
$doc = new SimpleXMLElement('<foo>
  <bar>a</bar>
  <bar>b</bar>
  <bar>c</bar>
  <bar>x</bar>
  <bar>y</bar>
  <bar>z</bar>
</foo>');

$nodes = $doc->xpath('bar[position()=1 or position()=last()-1]');
foreach( $nodes as $n ) {
  echo $n, "\n";
}

打印

a
y

另见:

答案 1 :(得分:0)

这是:

<?php

    $url = 'http://developer.multimap.com/API/geocode/1.2/OA10081917657704697?qs=Byker&countryCode=GB';
    $results = simplexml_load_file($url);
    $areas = array();
    foreach ($results->Location->Address->Areas->Area as $area)
    {
        $areas[] = (string) $area;
    }

    $first = $areas[0];

    $second_last = $areas[count($areas)-2];

?>