Le nombre de ligne en XML

Résolu
cs_JCpp Messages postés 334 Date d'inscription samedi 12 janvier 2002 Statut Membre Dernière intervention 3 juillet 2010 - 4 août 2007 à 12:55
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 - 4 août 2007 à 14:03
Bonjour,
ça fonctionne, mais, je ne trouve pas le moyen de coder plus simplement pour connaître le nombre de ligne. (9 dans l’exemple)
Merci beaucoup.
@+

<?xmlversion="1.0"encoding="ISO-8859-1"?>
<contacts>
<testIn="toto"/>
<testIn="tata"/>
<testIn="titi"/>
<testIn="mama"/>
<testIn="popo"/>
<testIn="bobo"/>
<testIn="dodo"/>
<testIn="roro"/>
<testIn="pipi"/>
</contacts>
<?php

 $Nbr=0;
$dom = DomDocument::load("test.xml");
$node = $dom->getElementsByTagName('contacts')->item(0);
foreach($node->childNodesas$n){
if($n->nodeType == XML_ELEMENT_NODE){
$Nbr++;
}
}
printf('%s
',$Nbr);
?>

10 réponses

cs_JCpp Messages postés 334 Date d'inscription samedi 12 janvier 2002 Statut Membre Dernière intervention 3 juillet 2010
4 août 2007 à 13:42
Tout simplement



$document = DomDocument::load("test.xml");
$xpath = new DOMXPath($document);
$nbTest = $xpath->evaluate('count(/contacts/test)');
echo "Il y a $nbTest test(s)";
3
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
4 août 2007 à 13:43
Salut,

Tu as en gros deux solutions pour trouver le nombre d'élements "test In" :

1. Celle que tu as presque trouvée :
$dom = DomDocument::load("test.xml");
$nbr = $dom->getElementsByTagName('testIn')->length;

2. Avec Xpath :
$dom = DomDocument::load("test.xml");
$xpath = new DomXpath($dom);
$nbr = $xpath->evaluate('count(/contacts/testIn)');

A+
3
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
4 août 2007 à 13:07
Hello,

$fichier = file('

test.xml'
);
echo count($fichier); 
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
4 août 2007 à 13:10
Quoique, si tu ne veux compter qu'un seul type de balises et pas toutes les lignes, tu fais un explode('testIn', $tonxml) et tu fais count - 1.
à+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_JCpp Messages postés 334 Date d'inscription samedi 12 janvier 2002 Statut Membre Dernière intervention 3 juillet 2010
4 août 2007 à 13:17
salut,
Je veux compter juste les «test In » mais, il peut y avoir d'autres balises aussi avec un nombre variable.
Je ne comprends pas ton explode.
Merci
0
kishkaya Messages postés 365 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 17 avril 2008
4 août 2007 à 13:17
Bonjour,
Si t'envisage de faire des modifs dans ton XML tu vas devoir passer par DOM (ou sax) ou alors le XSL (il y a une librairie php qui prend le xsl), dans ce cas la, au lieu de faire fopen ne serait il pas mieux d'utiliser directement l'instance de DomDocument crée ?
Je demande juste pour savoir en terme de vitesse de traitement sur des gros XML ce qui serait le plus adapté ?

_Marikou
0
cs_JCpp Messages postés 334 Date d'inscription samedi 12 janvier 2002 Statut Membre Dernière intervention 3 juillet 2010
4 août 2007 à 13:28
Coucou,
Oui, le fichier xml sera modifié et j'utilise de dom.
Mon problème c'est que je voudrais savoir combien j'ai de baise «test In».
Je suis novice en php, il faut certainement utiliser length, count, ou autre chose mais je n'y arrive pas.
Ça bug.




<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
4 août 2007 à 13:42
Si $string contient ton xlm, tu fais $tab = explode('testIn', $string); $number = count($tab)-1; echo $number;
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
4 août 2007 à 13:48
Evangun:"Si $string contient ton xlm, tu fais $tab explode('testIn', $string); $number count($tab)-1; echo $number;"

... ce n'est pas correct !!!

Avec ce XML, tout à fait valide :
<contacts><testIn></testIn></contacts>
http://www.catb.org/%7Eesr/faqs/smart-questions.html
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
4 août 2007 à 14:03
Lol, oui ok je vais un peu vite et en plus ce n'est pas très propre, désolé Faut que je me mette aux fonctions toutes faites pour le XML moi.
bref avec <testIn explode marcherait mieux c'est sûr...
0
Rejoignez-nous