Lire certaines données XML depuis une page PHP

Résolu/Fermé
ludwig.vdb Messages postés 2 Date d'inscription lundi 3 décembre 2012 Statut Membre Dernière intervention 4 décembre 2012 - 3 déc. 2012 à 23:08
ludwig.vdb Messages postés 2 Date d'inscription lundi 3 décembre 2012 Statut Membre Dernière intervention 4 décembre 2012 - 4 déc. 2012 à 12:45
Bonjour,

Je vous expose mon problème, je suis actuellement sur la création d'un site dans lequel j'ai besoin d'aller lire certaines données précise d'un fichier XML depuis une page PHP lorsque cette dernière est chargée.

Voici en gros la structure du fichier XML : (je l'ai raccourci car la version complète est bien plus longue)
<?xml version='1.0' encoding='UTF-8'?>
<eveapi version="2">
  <currentTime>2012-12-03 21:51:21</currentTime>
  <result>
    <balance>400141627.05</balance>
    <attributeEnhancers />
    <rowset name="skills" key="typeID" columns="typeID,skillpoints,level,published">
      <row typeID="3388" skillpoints="768000" level="5" published="1" />
      <row typeID="3389" skillpoints="135765" level="4" published="1" />
      <row typeID="3454" skillpoints="1250" level="1" published="1" />
      <row typeID="20342" skillpoints="40000" level="3" published="1" />
      <row typeID="11395" skillpoints="8486" level="2" published="1" />
    </rowset>
    <rowset name="certificates" key="certificateID" columns="certificateID">
      <row certificateID="285" />
      <row certificateID="286" />
    </rowset>
  </result>
  <cachedUntil>2012-12-03 22:05:57</cachedUntil>
</eveapi>


J'arrive déjà à récupérer certains paramètres en utilisant XPATH, notamment la valeur de "balance" que je met ensuite dans une variable de session comme ceci :
$xml = new SimpleXMLElement($adressexml, Null, True);
$nodes = $xml->xpath('//eveapi/result');  
foreach($nodes as $ua) { 
$_SESSION['balance']=(string)$ua->balance[0];
}


Mais j'ai également besoin de récupérer la valeur "level" d'une des lignes du rowset "skills" en connaissant bien sur son typeID.

Malheureusement toutes mes tentatives pour le moment se sont soldées par un échec. Si quelqu'un pouvais m'expliquer comment je suis censé procéder je lui en serait énormément reconnaissant.

A voir également:

3 réponses

sebooch Messages postés 563 Date d'inscription dimanche 25 avril 2010 Statut Membre Dernière intervention 4 janvier 2014 22
Modifié par sebooch le 4/12/2012 à 01:30
Salut

Un truc comme cela peut-être ?
<?php
  $adressexml = "test.xml";
  $xml = new SimpleXMLElement($adressexml, Null, True);
  
  $nodes_skills = $xml->xpath('//eveapi/result/rowset/row');
  foreach($nodes_skills as $rows) {
    if($rows['typeID']) { 
      echo (string) $rows['typeID']. " / " .$rows['level'] . "<br />";
    }
  }
?>
0
//row[@typeID='11395']
0
ludwig.vdb Messages postés 2 Date d'inscription lundi 3 décembre 2012 Statut Membre Dernière intervention 4 décembre 2012
4 déc. 2012 à 12:45
Milles merci pour vos réponses.

Cela fonctionne, c'était pourtant tout bête mais j'était passé à coté. Encore Merci
0