Análise de dados do OSM para obter os nós com filho

Eu baixei os dados do Open Street Map para uma região pequena, eu quero filtrar os dados para obter os nós com categoria especial.

Aqui está uma amostra dos dados do OSM

 <node id="505126369" lat="31.2933856" lon="34.2687443" user="JumpStart International" uid="125156" visible="true" version="1" changeset="2568758" timestamp="2009-09-22T13:05:10Z"/>
 <node id="505126372" lat="31.2682934" lon="34.2745680" user="JumpStart International" uid="125156" visible="true" version="1" changeset="2568758" timestamp="2009-09-22T13:05:10Z"/>
 <node id="505126375" lat="31.2953082" lon="34.3471630" user="JumpStart International" uid="125156" visible="true" version="1" changeset="2568758" timestamp="2009-09-22T13:05:10Z"/>
 <node id="505126378" lat="31.2807872" lon="34.2757999" user="JumpStart International" uid="125156" visible="true" version="1" changeset="2568758" timestamp="2009-09-22T13:05:11Z">
   <tag k="amenity" v="school"/>
   <tag k="name" v="Al Aqqad Basic &amp; Secondary Female School"/>
   <tag k="name:ar" v="مدرسة العقاد الأساسية والثانوية للبنات"/>
  </node>

Eu quero pegar todas as escolas, hospitais nos dados.

Se alguém tivesse feito a análise XML com PHP ou Java, eu apreciaria muito compartilhar isso comigo e com todos os interesses.

Editar Aqui está um começo simples que acabei de

$dataFile = base_url() . 'media/files/osmdata/map_3.xml';
    //echo ($dataFile);

    $xml = simplexml_load_file($dataFile);

    //    $countTotal = count($xml->node);
    //   echo 'here'.$countTotal;
    foreach ($xml as $key => $val) {
        var_dump($val);
               // can't manage things overs here

    }

questionAnswers(1)

yourAnswerToTheQuestion