2010-06-04 2 views
0

Je cherche à obtenir la valeur A-1 via xpath en fonction d'un attribut passé.Valeur d'accès via l'attribut parent

J'ai passé l'attribut d'index de l'unité par php à partir d'une page précédente et je l'accès par GET globale:

$value = intval($_GET['index']); 

xml:

<UNIT index='1'> 
    <ID>A-1</ID> 
    <MANUFACTURER>testing inc.</MANUFACTURER> 
</UNIT> 
<UNIT index='2'> 
    <ID>A-2</ID> 
    <MANUFACTURER>testing inc.</MANUFACTURER> 
</UNIT> 

Je suis en train de faire écho il l'aide:

$xml = new SimpleXMLElement('demo.xml',NULL,true); 

echo $xml->UNIT[$value]->ID; 

Je sais que je suis en train de la « 1 » que j'ai besoin parce que je traversai echo'd v $ alue à vérifier, mais son me donnant l'ID de A-2, qui serait le numéro d'index xml (à partir de 0) - pas mon numéro d'index d'attribut.

+0

Vous n'utilisez XPath. Ce serait quelque chose comme $ xml-> xpath ('$ path)'; – VolkerK

+0

duplication possible de [XML avec xpath et PHP: Comment accéder à la valeur textuelle d'un attribut d'une entrée] (http://stackoverflow.com/questions/1912240/xml-with-xpath-and-php-how-to -access-the-text-value-d'-un-attribut-d'-une-entrée) *** EDIT: celui-ci: [XML avec xpath et PHP: Comment accéder à la valeur textuelle d'un attribut d'une entrée] (http://stackoverflow.com/questions/992450/simplexml-selecting-elements-which-have-a-certain-attribute-value)*** – hakre

Répondre

1

Vous pouvez utiliser la méthode SimpleXMLElement::xpath pour rechercher le UNIT spécifique que vous souhaitez avec une requête XPath comme //UNIT[@index=2].

$value = intval($_GET['index']); 
$xml = new SimpleXMLElement('demo.xml',NULL,true); 
$units = $xml->xpath("//UNIT[@index=$value]"); // xpath returns an array 
if (isset($units[0])) { 
    echo $units[0]->ID; 
} else { 
    echo "No unit with index $value"; 
} 
0

Utilisation:

//UNIT[@index=$value]/ID

Questions connexes