2010-08-08 5 views
0

Un utilisateur peut sélectionner une performance, de sorte que les éléments de performance ont des ID uniques. Je veux dire en gros:XML simple - Comment sélectionner tous les éléments ayant une valeur d'attribut spécifique

Sélectionnez tout reservations-> reservation ['seat'] FROM performances-> performance ['id = 2']. J'espère que cela a du sens, je suis vraiment aux prises avec des sélections en langage XML simple.

Merci d'avance, Henry.

<performances> 
       <performance id="7" time="12:00" day="Monday" month="June" year="2010"> 
        <reservations> 
         <reservation seat="a7"/> 
         <reservation seat="a2"/> 
         <reservation seat="a3"/> 
        </reservations> 
       </performance> 
       <performance id="8" time="12:00" day="Tuesday" month="June" year="2010"> 
        <reservations> 
         <reservation seat="a8"/> 
        </reservations> 
       </performance> 
</performances> 

Extra Info:

J'utilise actuellement: echo $xml2->show->performances->performance['0']->reservations->reservation['seat']

Cela devient une réserve de la première représentation, mais je veux toutes les réservations de la performance avec l'id '3' par exemple .

+0

duplication possible de [SimpleXML: sélection d'éléments ayant une certaine valeur d'attribut] (http://stackoverflow.com/questions/992450/simplexml-selecting-elements-which-have-a-certain-attribute-value) – hakre

Répondre

2

Votre "SQL":

SELECT reservations->reservation['seat'] FROM performances->performance['id=2'] 

peut être reformulée comme:

FROM performances->performance['id=2'] SELECT reservations->reservation['seat'] 

peut être reformulée comme XPath:

 
//performances/performance[@id=2]/reservations/reservation/@seat 

Ant qui est ce dont vous avez besoin. Regardez SimpleXML's xpath() method.

+0

J'ai écrit FROM performances, mais j'essayais de souligner que je veux que cela vienne d'un élément d'identification de performance spécifique. J'utilise seulement PHP. – Henryz

+1

C'est exactement ce que fait XPath. Il sélectionne uniquement les réservations d'une performance avec un identifiant particulier. * (PS: Que signifie "Je n'utilise que PHP" signifie?) * – Tomalak

+0

Désolé, je suis vraiment confus. J'ai besoin d'écrire du PHP qui saisira les 3 valeurs de siège de réservation de la performance de l'élément qui a l'ID de 7. – Henryz

1
<?php 
// create a variable repsresenting the xml to parse through 
$string = '<performances> 
      <performance id="7" time="12:00" day="Monday" month="June" year="2010"> 
       <reservations> 
        <reservation seat="a7"/> 
        <reservation seat="a2"/> 
        <reservation seat="a3"/> 
       </reservations> 
      </performance> 
      <performance id="8" time="12:00" day="Tuesday" month="June" year="2010"> 
       <reservations> 
        <reservation seat="a8"/> 
       </reservations> 
      </performance> 
</performances>'; 

// create a variable representing a SimpleXMLElement instance 
$xml = simplexml_load_string($string); 

// create a variable representing the desired results, using the xpath method for 
// the SimpleXMLElement instance previously created. 
$results = $xml->xpath('//performances/performance[@id=2]/reservations/reservation/@seat'); 

?> 

Désolé de voler le tonnerre de Tomalak ici. Certaines personnes ont besoin de l'épeler parfois.

+0

Hey Cory, je suis nouveau à la fois XML et XPATH donc j'ai trouvé difficile de saisir le concept. Je ne pense pas que vous sachiez s'il est possible d'écrire (addAtrribute) en utilisant xpath aussi? – Henryz

Questions connexes