Les Allergies
Alimentaires
Posez votre question Signaler

Xml vers tableau php [Résolu]

JypX 59Messages postés 21 décembre 2009Date d'inscription - Dernière réponse le 6 févr. 2010 à 11:37
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;
?>
Lire la suite 

Xml vers tableau php »

Suggestions
6 réponses
Réponse
+0
moins plus
Non, il faudra au moins 2 getElementsByTagName.
Ajouter un commentaire
Réponse
+0
moins plus
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?
Ajouter un commentaire
Réponse
+0
moins plus
Ça dépends de la structure de ton XML.
Ajouter un commentaire
Réponse
+0
moins plus
<?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>
....
...
...
Ajouter un commentaire
Réponse
+0
moins plus
<?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 , ...
Ajouter un commentaire
Réponse
+0
moins plus
C'est génial ton truc! Merci
Ajouter un commentaire
Ce document intitulé « xml vers tableau php » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?