2 votes

Comment compter les fois où deux nœuds d'un fichier XML apparaissent dans un même élément ?

Disons que j'ai plusieurs fichiers XML de personnes et de livres qu'elles ont écrits, comme suit :

<person name="Margret Jane" id="mj"> 
  <book>
    <author id="mj"> Margret Jane </author> 
    <author id="js"> Sarah Jane </author>
    <author id="ms"> Michael Scott </author>
  </book>
  <book>
    <author id="mj"> Margret Jane </author> 
    <author id="fr"> Freya Rob </author>
    <author id="ms"> Michael Scott </author>
  </book>

etc etc

Comment pourrais-je compter les fois où Margret et Michael ont été coauteurs ?

Je l'ai utilisé :

$getMargret = new DOMDocument();
$getMargret->load("Margret.xml");

$counter= $getMargret->getElementsByTagName("person")[0]->getElementsByTagName('book')->length;

print_r($counter);

afin d'obtenir le nombre total de livres dont Margret est l'auteur, mais je ne sais pas comment compter les cas de coécriture.

3voto

The fourth bird Points 40138

Une option consiste à utiliser DOMXpath vérification des deux noms :

/person/book[author = ' Margret Jane ' and author = ' Michael Scott ']

Exemple de code

$getMargret = new DOMDocument();
$getMargret->load("Margret.xml");
$xpath = new DOMXpath($getMargret);
$counter=  $xpath->query("/person/book[author = ' Margret Jane ' and author = ' Michael Scott ']")->length;
echo $counter;

Sortie

2

Voir un Démonstration Php

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X