Nous sommes actuellement le 10 Juil 2026, 20:14

Le fuseau horaire est UTC-5 heures [Heure d’été]




Publier un nouveau sujet Répondre au sujet  [ 5 message(s) ] 
Auteur Message
 Sujet du message: PHP4 XML et EXPAT
MessagePublié: 16 Juil 2007, 15:07 
Hors-ligne
Référence
Référence
Avatar de l’utilisateur

Inscription : 06 Jan 2002, 22:38
Message(s) : 5949
Localisation : Quebec
Voilà, j'ai besoin de votre lumière. Un client est sous php 4 avec EXPAT d'installer comme module pour gerer le XML. Je suis pas mal fourré car il me disait avoir PHP5 et je pensais utiliser les outils PHP pour lire mon XML ce qui est pas le cas. Ce que je veux faire est normalement simple, dans le xml suivant :
Code :
 <?xml version="1.0" encoding="utf-8" standalone="no" ?>
- <PostalCodeLookup version="1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://cgdi-dev.geoconnections.org/prototypes/schemas/cgdi/postalcode/1.0.0/postalcode.xsd" xmlns:gml="http://www.opengis.net/gml">
- <gml:boundedBy>
  <gml:Null>inapplicable</gml:Null>
  </gml:boundedBy>
- <PostalCodeResultSet sortArea="FSA">
- <PostalCode>
  <gml:name>M6M</gml:name>
  <Placename>Toronto</Placename>
  <ProvinceOrTerritory>ON</ProvinceOrTerritory>
- <gml:centerOf>
- <gml:Point srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
  <gml:coordinates>-79.48468,43.697777</gml:coordinates>
  </gml:Point>
  </gml:centerOf>
  </PostalCode>
  </PostalCodeResultSet>
  </PostalCodeLookup>
Je veux récuperer cette information :
Code :
<gml:coordinates>-79.48468,43.697777</gml:coordinates>


Je sais pas si vous auriez un bon tutoriel ou des pistes de codes à me suggerer, cela m'aiderait pas mal.

Merci.

_________________
Herakles Informatique Inc
Collaborateur pour HardGamers


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 16 Juil 2007, 15:58 
Hors-ligne
Référence
Référence
Avatar de l’utilisateur

Inscription : 06 Jan 2002, 22:38
Message(s) : 5949
Localisation : Quebec
En fouillant, j'ai reussi à mettre au point cela :
Code :
// Extracts content from XML tag

function GetElementByName ($xml, $start, $end) {

    global $pos;
    $startpos = strpos($xml, $start);
    if ($startpos === false) {
        return false;
    }
    $endpos = strpos($xml, $end);
    $endpos = $endpos+strlen($end);   
    $pos = $endpos;
    $endpos = $endpos-$startpos;
    $endpos = $endpos - strlen($end);
    $tag = substr ($xml, $startpos, $endpos);
    $tag = substr ($tag, strlen($start));

    return $tag;

}

// Open and read xml file. You can replace this with your xml data.
function parsercode ($codepostal) {
  $file = "http://geoservices.cgdi.ca/cgi-bin/postalcode/postalcode.cgi?version=1.0.0&request=GetPostalCode&sortarea=FSA&code=".$codepostal;
  $pos = 0;
  $Nodes = array();
 
  if (!($fp = fopen($file, "r"))) {
      die("could not open XML input");
  }
  while ($getline = fread($fp, 4096)) {
      $data = $data . $getline;
  }
 
  $count = 0;
  $pos = 0;
 
  // Goes throw XML file and creates an array of all <XML_TAG> tags.
  while ($node = GetElementByName($data, "<PostalCode>", "</PostalCode>")) {
      $Nodes[$count] = $node;
      $count++;
      $data = substr($data, $pos);
  }
 
  // Gets infomation from tag siblings.
  for ($i=0; $i<$count; $i++) {
  $code = GetElementByName($Nodes[$i], "<gml:coordinates>", "</gml:coordinates>");
  }
  echo $code;
  echo $codepostal;
}

_________________
Herakles Informatique Inc
Collaborateur pour HardGamers


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 16 Juil 2007, 16:42 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

Inscription : 08 Jan 2002, 11:31
Message(s) : 811
Localisation : Still on Mars
Salut,

Tu aurais tres bien peu le faire avec dom/domxml xpath de PHP.
Ca facilite grandement le parsing de flux xml.

Code :
$doc = domxml_open_mem($xml);
$xpath = $doc->xpath_new_context();
$obj = $xpath->xpath_eval('//coordinates');
var_dump($obj->nodeset);

_________________
Pro_PHP

La Conference PHP Québec 2008
La communauté PHP Québec


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 16 Juil 2007, 18:47 
Hors-ligne
Référence
Référence
Avatar de l’utilisateur

Inscription : 06 Jan 2002, 22:38
Message(s) : 5949
Localisation : Quebec
Oui mais j'ai fait avec ce que j'avais acces sur le serveur malheureusement.

_________________
Herakles Informatique Inc
Collaborateur pour HardGamers


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 17 Juil 2007, 17:53 
Hors-ligne
Petit nouveau
Petit nouveau

Inscription : 19 Fév 2002, 18:51
Message(s) : 34
Localisation : Québec
Si c'est pour trouver seulement cet item, il est un peu lourd de charger une libraire XML alors qu'une simple expression régulière va faire le travail

Code :
preg_match("/<gml:coordinates>(.*)<\/gml:coordinates>/i", $chaineXML, $matches);

echo $matches[1];



Haut
 Profil  
Répondre en citant  
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 5 message(s) ] 

Le fuseau horaire est UTC-5 heures [Heure d’été]


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 1 invité


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum

Recherche de:
Aller vers :  
cron
Propulsé par phpBB® Forum Software © phpBB Group
Traduction et support en françaisHébergement de site