Veuillez me pardonner si ce qui suit est un peu confus, je me suis tué à la tâche en essayant de résoudre ce problème.
Il s'agit d'un morceau de XML (exporté d'un site beaucoup plus grand) que j'utilise pour créer un arbre de catégories pour un mini-CMS. Une fois que j'ai obtenu la valeur et le nom du nœud, ce qui n'est pas un problème, j'ai également besoin d'obtenir le "parent" de chaque nœud, c'est-à-dire le nœud qui le précède et qui se trouve au-dessus de lui dans la hiérarchie.
<productCategory>
<genericName>DigitalCinema</genericName>
<productCategories>
<productCategory>
<genericName>DCinemaProj</genericName>
<productModels>
<productModel>ProjProd-1</productModel>
<productModel>ProjProd-2</productModel>
<productModel>ProjProd-3</productModel>
<productModel>ProjProd-4</productModel>
</productModels>
</productCategory>
<productCategory>
<genericName>DCinemaLens</genericName>
</productCategory>
</productCategories>
</productCategory>
Par exemple, pour l'élément productCategory-genericName DCinemaLens j'ai besoin de pouvoir saisir le parent en tant que DigitalCinema et de même pour l'individu produitModèle où le parent serait DCinemaProj .
J'ai essayé plusieurs requêtes différentes dans xpath en utilisant ancestor, previous-sibling et parent et je n'arrive toujours pas à récupérer le nœud dont j'ai besoin.
Voici mon code tel qu'il se présente après avoir abandonné mes tentatives il y a quelques minutes.
if ($xml->xpath('//productCategories')) {
foreach($xml->xpath('//genericName | //productModel') as $genericName){
echo "<p align='center'>$genericName";
$type = $genericName->getName();
echo " - (" . $type . ") ";
$derp = $xml->xpath("ancestor::productCategory[1]/genericName");
echo $derp;
echo '</p>';
}
}
J'ai également réussi à obtenir des informations dans un tableau, mais cela renvoie toujours toutes les valeurs du XML.
$key = 'genericName';
$derpgleep = $derp[$key];
echo 'Derp= ' . $derpgleep;
print_r($derp);
J'espère qu'il existe une solution très simple que je néglige. J'espère avoir été clair.