2010-07-26 6 views
2

J'utilise SimpleXMLElement et xpath pour essayer de lire le <subcategory><name> du xml tout en bas. Ce code fonctionne .. mais les choses à l'intérieur de la boucle while semble un peu brouillon, et maintenant je veux aussi obtenir le <subcategory><count> et en quelque sorte le jumeler avec son <subcategory><name> approprié.lecture xml: peut xpath lire 2 champs?

$names = $xml->xpath('/theroot/category/subcategories/subcategory/name/'); 
while(list(, $node) = each($names)) { 
    echo $node; 
} 

Ma question: Est-il possible d'obtenir cet appariement tout en utilisant XPath car il semble que cela peut rendre le travail plus facile?

<theroot> 
<category> 
    <name>Category 1</name> 
    <subcategories> 
     <subcategory> 
      <name>Subcategory 1.1</name> 
      <count>18</count> 
     </subcategory> 
     <subcategory> 
      <name>Subcategory 1.2</name> 
      <count>29</count> 
     </subcategory> 
    </subcategories> 
</category> 

<category> 
    <name>Category 2</name> 
    <subcategories> 
     <subcategory> 
      <name>Subcategory 2.1</name> 
      <count>18</count> 
     </subcategory> 
     <subcategory> 
      <name>Subcategory 2.2</name> 
      <count>29</count> 
     </subcategory> 
    </subcategories> 
</category> 
</theroot> 
+0

Qu'est-ce que "pairing"? –

Répondre

2

Si vous utilisez SimpleXML, et vous savez que la mise en page exacte, il pourrait être plus facile de le faire:

$subcategories = $xml->xpath('/theroot/category/subcategories/subcategory'); 
foreach($subcategories as $subcategory){ 
    echo $subcategory->name.'='.$subcategory->count; 
} 

Avec XPath, vous pouvez bien sûr sélectionner tous les sous-noeuds de subcategory, mais appariement eux sauvegarder pourrait être plus de problème alors juste pour xpath précédent pour le dernier nœud.

+0

On dirait que c'est ce dont j'avais besoin, merci. – stacker