Xml vers tableau php

Résolu
JypX Messages postés 68 Statut Membre -  
JypX Messages postés 68 Statut Membre -
Bonjour,

Peut on simplifier ce code car si j'ai bien tout compris : il parcourt une première fois pour les puls puis reparcourt pour la vitesse.
Peut on récupérer les puls et la vitesse en 1 fois?
<?php
$dom = new DomDocument;
$dom->load("Log_090717_090008.slf");
// Puls
$listePuls = $dom->getElementsByTagName('Puls');
foreach($listePuls as $puls)
$arraypuls[] = $puls->firstChild->nodeValue;
// Vitesse
$listeVitesse = $dom->getElementsByTagName('Speed');
foreach($listeVitesse as $vitesse)
$arrayvitesses[] = $vitesse->firstChild->nodeValue;
?>
Configuration: Linux
Firefox 3.5.7

6 réponses

  1. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Non, il faudra au moins 2 getElementsByTagName.
    0
  2. JypX Messages postés 68 Statut Membre 7
     
    Donc si j'ai 10 champs à récupérer il me fait 10 getElementsByTagName. On peut pas faire autrement car ça doit utilisé pas mal de ressource serveur?
    0
  3. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Ça dépends de la structure de ton XML.
    0
  4. JypX Messages postés 68 Statut Membre 7
     
    <?xml version="1.0" encoding="utf-8"?>
    
    <Log>
      <Information>
        <Name><![CDATA[Sortie groupe jambon]]></Name>
        <Notiz/>
        <RadGroesse>2133</RadGroesse>
        <Einheit>kmh</Einheit>
        <Fahrrad>2</Fahrrad>
        <HFMax>205</HFMax>
        <StartZone1>113</StartZone1>
        <StartZone2>144</StartZone2>
        <StartZone3>169</StartZone3>
        <EndeZone3>205</EndeZone3>
        <Kalorien>01918</Kalorien>
        <StartZeit>08:33:51</StartZeit>
        <SamplingRate>5</SamplingRate>
        <StoppZeit>10:39:08</StoppZeit>
        <StartDatum>05.07.09</StartDatum>
        <StoppDatum>05.07.09</StoppDatum>
      </Information>
      <LogEintraege>
        <Eintrag pause="0" wp="0">
          <Pause zeit=""/>
          <Rest zeit=""/>
          <WPTitel/>
          <WPNotiz/>
          <RPLAbs>0</RPLAbs>
          <Speed>38.59</Speed>
          <Puls>117</Puls>
          <Hoehe>40</Hoehe>
          <Temp>22</Temp>
          <Steigung>0</Steigung>
        </Eintrag>
        <Eintrag pause="0" wp="0">
          <Pause zeit=""/>
          <Rest zeit=""/>
          <WPTitel/>
          <WPNotiz/>
          <RPLAbs>23</RPLAbs>
          <Speed>39.56</Speed>
          <Puls>118</Puls>
          <Hoehe>40</Hoehe>
          <Temp>22</Temp>
          <Steigung>0</Steigung>
        </Eintrag>
        <Eintrag pause="0" wp="0">
          <Pause zeit=""/>
          <Rest zeit=""/>
          <WPTitel/>
          <WPNotiz/>
          <RPLAbs>24</RPLAbs>
          <Speed>41.11</Speed>
          <Puls>123</Puls>
          <Hoehe>40</Hoehe>
          <Temp>22</Temp>
          <Steigung>0</Steigung>
        </Eintrag>
        <Eintrag pause="0" wp="0">
          <Pause zeit=""/>
          <Rest zeit=""/>
          <WPTitel/>
          <WPNotiz/>
          <RPLAbs>24</RPLAbs>
          <Speed>41.88</Speed>
          <Puls>132</Puls>
          <Hoehe>40</Hoehe>
          <Temp>22</Temp>
          <Steigung>0</Steigung>
        </Eintrag>
        <Eintrag pause="0" wp="0">
          <Pause zeit=""/>
          <Rest zeit=""/>
          <WPTitel/>
          <WPNotiz/>
          <RPLAbs>24</RPLAbs>
          <Speed>40.53</Speed>
          <Puls>137</Puls>
          <Hoehe>40</Hoehe>
          <Temp>22</Temp>
          <Steigung>0</Steigung>
        </Eintrag>
    ....
    ...
    ...
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    <?php
    $dom = new DOMDocument();
    $dom->load('fichier.xml');
    
    $LogEintraege = $dom->getElementsByTagName('LogEintraege')->item(0);
    $Eintrags = $LogEintraege->childNodes;
    foreach($Eintrags as $Eintrag) {
    	if($Eintrag->nodeName == 'Eintrag') {
    		$infos = $Eintrag->childNodes;
    		foreach($infos as $info) {
    			if($info != '#text') {
    				if(isset(${$info->nodeName}))
    					${$info->nodeName}[] .= $info->nodeValue;
    				else
    					${$info->nodeName}[] = $info->nodeValue;
    			}
    		}
    	}
    }
    ?>
    Avec ça, tu as une variable (array) portant le nom de chaque nœuf enfant (balise à l'intérieur) des nœuds "Eintrag".
    Par exemple : $Temp , $Steigung , $Puls , ...
    0
  7. JypX Messages postés 68 Statut Membre 7
     
    C'est génial ton truc! Merci
    0